在新的单一视图应用程序中,以下代码:
- (void)viewDidAppear:(BOOL)animated {
self.fooView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)];
self.fooView.backgroundColor = [UIColor yellowColor];
[self.view addSubview:self.fooView];
[UIView animateWithDuration:2 animations:^{
self.fooView.backgroundColor = [UIColor blueColor];
}];
}
将黄色背景设置为蓝色。fooView
只是:
@property (strong, nonatomic) UIView *fooView;
但是如果定义了自定义视图类FooView
,并且我将上面的代码替换UIView
为FooView
,并且还定义了一个空-drawRect
的 for FooView
,那么将没有动画 - 背景立即变为蓝色。
使用[UIView animateWithDuration: ...]
or没有区别[FooView animateWithDuration: ...]
——它不是动画。
如果 inside -drawRect
,我调用[super drawRect:rect];
,那么它是同一件事:没有动画。
如果我更改drawRect
为drawRect2
,或者如果我删除了整个方法,那么动画将起作用。
(并且-drawRect
可能需要,例如,如果我们需要在自定义视图 FooView 中绘制一个圆圈怎么办?)
这是为什么?除了给出如何使它工作的解决方案之外-drawRect
,请解释发生了什么使它没有动画?