我遇到了动画问题。
这是我目前的设置
- (id)initWithFrame:(CGRect)frame
方法- (void)layoutSubviews
方法中调整和分层视图框架以及添加的子视图。当我尝试为视图/子视图设置动画时,没有任何反应。一切顺利,直到我将分层移动到“initWithFrame”方法,它运作良好。
有人可以解释原因是什么以及为什么layoutSubviews中的分层视图无法很好地动画?
我认为这可能是由于调用方法的层次结构,我是否正确地想到了这一点?
代码(UIView的子类):
- (id)initWithFrame:(CGRect)frame
{
(...)
backgroundView = [[UIView alloc] initWithFrame:CGRectZero];
backgroundView.backgroundColor = [UIColor whiteColor];
(...)
}
- (void)layoutSubviews
{
CGRect frame = CGRectZero;
(...)
frame = (CGRect){ 100, 100, 200, 200 };
[backgroundView setFrame:frame];
(...)
[self addSubview:backgroundView];
}
- (void)animate
{
[UIView animateWithDuration:1.0f animations:^{
backgroundView.frame = CGRectMake(100, 100, 300, 300);
} completion:^{BOOL f){
NSLog(@"w: %f h: %f", backgroundView.frame.size.width, backgroundView.frame.size.height);
}];
}
尝试从子视图调用“animate”(使用[(MyClass *)self.superview animate]
)以及发送通知。
始终记录
w:200小时:200