新しいシングル ビュー アプリでは、次のコード:
- (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: ...]
た -- ノーアニメーションです。
の中にある場合は-drawRect
、 を呼び出します[super drawRect:rect];
が、同じことです: アニメーションはありません。
に変更drawRect
するdrawRect2
か、メソッド全体を削除すると、アニメーションが機能します。
(そして、-drawRect
たとえば、カスタム ビュー FooView で円を描画する必要がある場合はどうすればよいでしょうか?)
何故ですか?でさえそれを機能させる方法の解決策を与えることに加えて、-drawRect
それがアニメーション化されなかった原因を説明してください?