在 layoutSubviews 中,我将我的子视图布局到适当的位置,并为其中一些应用一些转换。现在我想在这个子视图上制作可重复的比例动画以引起注意。但是,当我使用 [UIView animate....] 启动动画时,会更改变换属性 - 触发 layoutSubviews 方法,该方法与动画冲突(它会覆盖变换并且未播放动画)。
有没有什么好的方法(没有布尔标志)来处理这种行为?
例子:
- (void)layoutSubviews {
[super layoutSubviews];
myChildView.transform = CGAffineTransformMake....;
}
- (void)animate {
CGAffineTransform originalTransform = myChildView.transform;
[UIView animateWithDuration:0.1f
delay:0.0f
options:UIViewAnimationOptionAutoreverse
animations:^{
[UIView setAnimationRepeatCount:4];
//next line of code produce calling layoutSubviews
myChildView.transform = CGAffineTransformMakeScale(1.15f, 1.15f);
} completion:^(BOOL finished){
myChildView.transform = originalTransform;
//after this also called layoutSubviews
}];
}