作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 Xcode 版本 7.2.1 (7C1002),
SDK iOS 9.2
尝试从左(离屏)到右为 imageView 设置动画并重复动画。我知道动画在 viewDidLoad 中按预期工作,但这并不理想,因为当出现新 Controller 或应用程序进入后台并返回前台时动画停止。我希望在 Controller 再次出现时重新启动动画。当我将代码移动到 viewwillappear 时,动画永远不会发生。
我试过了:
@property (nonatomic, strong) IBOutlet UIImageView *movingL2R_1_ImageView;
@property (nonatomic) IBOutlet NSLayoutConstraint *movingL2R_1_LeadingConstraint;
- (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;
}];
}
最佳答案
如前所述,如果 [self startAnimations];
,上面的代码可以完美运行。在 viewDidLoad 中调用,但不是在 viewDidAppear 中,而是 this answer helped me discover the subtle issue .
为了让它在 viewDidAppear 中工作,我需要替换 [self.movingL2R_1_ImageView layoutIfNeeded];
和[self.view layoutIfNeeded];
世界再次一切正常。
关于ios - animateWithDuration 在 viewWillAppear ios 9 objective-c 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36454465/
我是一名优秀的程序员,十分优秀!