[英]animateWithDuration not working in viewWillAppear ios 9 objective c
使用Xcode版本7.2.1(7C1002),SDK iOS 9.2
尝试从左(屏幕外)向右制作imageView动画,并使动画重复 。 我知道动画在viewDidLoad中可以按预期工作,但是这不是理想的,因为当出现新的控制器或应用程序进入后台并回到前台时,动画会停止。 我希望动画在控制器再次出现时重新启动。 当我将代码移动到viewwill时,动画永远不会发生。
我试过了:
动画工作的唯一时间是从viewDidLoad调用时。 任何帮助,将不胜感激。 我一定想念一些确实很明显的东西。 这是代码(不起作用)...
MainViewController.h
@property (nonatomic, strong) IBOutlet UIImageView *movingL2R_1_ImageView;
@property (nonatomic) IBOutlet NSLayoutConstraint *movingL2R_1_LeadingConstraint;
MainViewController.m
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self startAnimations];
}
-(void) startAnimations{
[self animateMovingL2R_1_ImageView];
// other animations will go here...
}
-(void) animateMovingL2R_1_ImageView {
NSTimeInterval animateInterval = 15;
[UIView animateWithDuration:animateInterval delay:0 options:UIViewAnimationOptionCurveEaseOut | UIViewAnimationOptionRepeat animations:^{
self.movingL2R_1_LeadingConstraint.constant = 500;
[self.movingL2R_1_ImageView layoutIfNeeded];
} completion:^(BOOL finished) {
// back to original position
self.movingL2R_1_LeadingConstraint.constant = -100;
}];
}
注意:MovingL2R_1_LeadingConstraint在Interface Builder中设置为-100,因此它是从此处开始的。
故事板入口点-> MainController
如前所述,如果[self startAnimations];
,则上面的代码可以完美地工作[self startAnimations];
在viewDidLoad中调用,但在viewDidAppear中未调用,但是此答案帮助我发现了微妙的问题 。
为了使其在viewDidAppear中工作,我需要更换
[self.movingL2R_1_ImageView layoutIfNeeded];
同
[self.view layoutIfNeeded];
一切都再次与世界同在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.