关键词:
【中文标题】与 NSTimer 一起使用时显示刻度动画而不是平滑动画的进度条【英文标题】:progress bar showing tick animation instead of smooth animation when used with NSTimer 【发布时间】:2014-05-11 08:02:33 【问题描述】:我正在使用 NSTimer 和循环进度条作为倒数计时器,即 15 秒
它使用以下代码,但我得到进度条的刻度动画而不是平滑动画,如何使其平滑动画
- (void)viewDidLoad
[super viewDidLoad];
self.labeledLargeProgressView.roundedCorners = NO;
self.labeledLargeProgressView.trackTintColor =[UIColor colorWithRed:0.0f/255.0f green:173.0f/255.0f blue:255.0f/255.0f alpha:1.0f];
self.labeledLargeProgressView.progressTintColor =[UIColor colorWithRed:255.0f/255.0f green:96.0f/255.0f blue:88.0f/255.0f alpha:1.0f];
self.labeledLargeProgressView.thicknessRatio = 1.0f;
self.labeledLargeProgressView.clockwiseProgress = YES;
[self.view addSubview:self.labeledLargeProgressView];
seconds = 15.0;
[self startAnimation];
- (void)progressChange
CGFloat progress ;
DALabeledCircularProgressView *labeledProgressView = self.labeledLargeProgressView;
if(labeledProgressView.progress >=1.0f && [self.timer isValid])
[self stopAnimation];
seconds = 15.0f;
else
progress=labeledProgressView.progress + 0.06666667f;
[labeledProgressView setProgress:progress animated:YES];
seconds --;
labeledProgressView.progressLabel.text = [NSString stringWithFormat:@"%i", seconds];
- (void)startAnimation
self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(progressChange)
userInfo:nil
repeats:YES];
self.continuousSwitch.on = YES;
- (void)stopAnimation
[self.timer invalidate];
self.timer = nil;
self.continuousSwitch.on = NO;
【问题讨论】:
好的我自己解决了..我会更新答案 【参考方案1】:我发现的是一组 UIview 动画和进度视图动画,它们工作得更好,并且可以流畅地动画进度视图。如果你只是使用动画和进度视图动画的组合,它会直接触发而不考虑 UIview 动画计时器。
-(void)viewDidAppear:(BOOL)animated
[super viewDidAppear:animated];
timer = [NSTimer scheduledTimerWithTimeInterval: 1.0f
target: self
selector: @selector(updateTimer)
userInfo: nil
repeats: YES];
- (void)updateTimer
if (progressView.progress >= 1.0)
[timer invalidate];
[UIView animateWithDuration:1 animations:^
float newProgress = [self.progressView progress] + 0.125;
[self.progressView setProgress:newProgress animated:YES];
];
随意调整动画时间以获得更好、更流畅的过渡
【讨论】:
【参考方案2】:我自己解决了我所做的是我更频繁地更新 0.1f 而不是 1.0f
- (void)progressChange
CGFloat progress ;
DALabeledCircularProgressView *labeledProgressView = self.labeledLargeProgressView;
if(labeledProgressView.progress >=1.0f && [self.timer isValid])
[self stopAnimation];
seconds = 15.0f;
_counter = 0;
else
progress=labeledProgressView.progress + 0.00666667f;
_counter ++;
[labeledProgressView setProgress:progress animated:YES];
if(_counter % 10 == 0)
seconds --;
labeledProgressView.progressLabel.text = [NSString stringWithFormat:@"%i", seconds];
- (void)startAnimation
self.timer = [NSTimer scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(progressChange)
userInfo:nil
repeats:YES];
self.continuousSwitch.on = YES;
【讨论】:
您可能应该删除您的问题;我怀疑这个答案会帮助任何人。 如果您每 0.1 秒制作一次动画,您的动画可能仍然不是很流畅。每次屏幕更新时(通常约为 60 Hz),您都可以使用 CADisplayLink 获取回调。将 Postman 与 ReactJS 和 MongooseDB 一起使用时显示“错误:套接字挂起”错误
】将Postman与ReactJS和MongooseDB一起使用时显示“错误:套接字挂起”错误【英文标题】:"Error:sockethangup"errordisplayedwhenusingPostmanwithReactJSandMongooseDB【发布时间】:2021-11-2007:45:39【问题描述】:我正在学习使用MongooseDB、Express... 查看详情
从 obj 文件加载时显示单色而不是纹理
...过改变照明来修复它,但它不起作用。我是Opengl的新手,使用cpplusplusguy的opengl教程系列来学习。我正在使用的图像!http: 查看详情
滚动到顶部边缘而不是底部边缘时显示 Div
...omedge【发布时间】:2014-10-1020:37:45【问题描述】:我正在使用来自here的代码,但是当顶部滚动到视图而不是底部时,我需要它来显示div,我该如何实现呢?JSFiddle$(document).ready(function()$(window).scroll(function()$(\'. 查看详情
与 Bootstrap 模态一起使用时显示在模态后面的 Angular ui-select 选项
】与Bootstrap模态一起使用时显示在模态后面的Angularui-select选项【英文标题】:Angularui-selectoptionsshowingbehindthemodalwhenusedwithBootstrapmodal【发布时间】:2016-09-1909:28:51【问题描述】:我面临Angularui-select的问题(替换HTML选择)。我添... 查看详情
将 backstack 与 ViewPager 一起使用
】将backstack与ViewPager一起使用【英文标题】:UsebackstackwithViewPager【发布时间】:2012-09-2415:24:45【问题描述】:我正在使用ViewPager在我的android应用中实现滑动。但是,我希望在用户使用后退按钮而不是结束活动时显示上一个片段... 查看详情
为啥 LibreOffice Impress 在每次按键时显示两个项目,而不是每个项目一个?
】为啥LibreOfficeImpress在每次按键时显示两个项目,而不是每个项目一个?【英文标题】:WhyLibreOfficeImpressdisplaystwoitemsateachkeypress,insteadofoneforeach?为什么LibreOfficeImpress在每次按键时显示两个项目,而不是每个项目一个?【发布时间... 查看详情
使用 afnetworking 拉 json 时显示加载动画
】使用afnetworking拉json时显示加载动画【英文标题】:Showingloadinganimationwhilepullingjsonwithafnetworking【发布时间】:2013-06-0920:05:21【问题描述】:我正在尝试使用MBProgressHUD在应用程序加载更多json数据时弹出加载动画。这是我用来调... 查看详情
extjs4 在按钮单击而不是鼠标悬停时显示工具提示
】extjs4在按钮单击而不是鼠标悬停时显示工具提示【英文标题】:extjs4displaytooltiponbuttonclickinsteadofmousehover【发布时间】:2012-12-1223:01:56【问题描述】:我正在尝试在下面的工具提示中添加一个点击监听器。我不希望在鼠标悬停... 查看详情
Okhttp 在与 volley 一起使用时显示泄漏警告
】Okhttp在与volley一起使用时显示泄漏警告【英文标题】:Okhttpshowingleakedwarningwhileusingwithvolley【发布时间】:2018-04-2919:28:29【问题描述】:在开发我的android应用程序时,我在Logcat中收到此警告WARNING:Aconnectiontohttps://...wasleaked.Didyouf... 查看详情
java示例代码_如何仅在活动启动而不是恢复时显示启动屏幕
java示例代码_如何仅在活动启动而不是恢复时显示启动屏幕 查看详情
如何在使用 AJAX、Django REST API 和 jQuery 以模式形式更新记录时显示外键字段名称而不是 ID
】如何在使用AJAX、DjangoRESTAPI和jQuery以模式形式更新记录时显示外键字段名称而不是ID【英文标题】:HowToShowForeignKeyFieldNameinsteadofIDwhenUPDATINGrecordsinamodalFormusingAJAX,DjangoRESTAPI&jQuery【发布时间】:2021-12-0201:29:26【问题描述】:我... 查看详情
使用 VBA 保存时显示“是不是要覆盖文件”对话框
】使用VBA保存时显示“是不是要覆盖文件”对话框【英文标题】:Gettingthe"Doyouwanttooverwritethefile"dialogboxtoshowwhensavingwithVBA使用VBA保存时显示“是否要覆盖文件”对话框【发布时间】:2015-06-2911:40:32【问题描述】:以下代码... 查看详情
图像仅在给定链接时显示,而不是路径 [重复]
】图像仅在给定链接时显示,而不是路径[重复]【英文标题】:ImageOnlyShowsWhenGivenaLink,NotaPath[duplicate]【发布时间】:2020-12-2100:56:58【问题描述】:我正试图在我的网站上展示一张图片,但遇到的麻烦比我想象的要多。我已经多次... 查看详情
点击表格视图单元格时显示图片
...白屏幕我尝试将单元格与不同的图像视图链接,但我不能使用tableview来做到这一点,那么所需的代码是什么我知道我应该使用prepareForSe 查看详情
多边形与 Openlayers 叠加时显示多个弹出窗口
...就是说,有时较大的多边形完全位于较小的多边形之上。使用Openlayers,是否可以显示两个弹出窗口而不是仅显示一个(第一个 查看详情
在点击文本字段时显示日期选择器
...本框相同。【问题讨论】:【参考方案1】:您可以为此使用文本字段 查看详情
如何在点击时显示 0:00 而不是 NaN:NaN
】如何在点击时显示0:00而不是NaN:NaN【英文标题】:Howtodisplay0:00insteadofNaN:NaNonclick【发布时间】:2020-07-1503:31:51【问题描述】:我有一个带有播放列表的音频播放器,但是当我单击新曲目时,它会短暂显示NaN:NaN,在此我有持续时... 查看详情
为啥我的代码在尝试显示 Math.random 值时显示 NaN 而不是整数?
】为啥我的代码在尝试显示Math.random值时显示NaN而不是整数?【英文标题】:WhyismycodedisplayingNaNinsteadofanintegerwhenattemptingtodisplayaMath.randomvalue?为什么我的代码在尝试显示Math.random值时显示NaN而不是整数?【发布时间】:2019-01-2701:44... 查看详情