私はタイル画像を表示するためのカスタムUIViewを持っています。アニメーション中のUIViewスケーリング
- (void)drawRect:(CGRect)rect
{
...
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClipToRect(context,
CGRectMake(0.0, 0.0, rect.size.width, rect.size.height));
CGContextDrawTiledImage(context, imageRect, imageRef);
...
}
このビューのサイズ変更をアニメーションしようとしています。
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3];
// change frame of view
[UIView commitAnimations];
タイルサイズは一定のままにして、タイル領域が成長することが予想されます。その代わりに、領域が拡大する一方で、ビューの元のコンテンツが新しいサイズにスケーリングされます。少なくともアニメーション中。したがって、アニメーションの最初と最後にすべてが良いです。アニメーションの間、タイルはゆがんでいます。
なぜCAは規模を拡大しようとしていますか?どうしたらそれを防ぐことができますか?私は何を取りこぼしたか?
ビューのcontentModeに関連しているようです。しかし、それをUIViewContentModeLeftに設定しても実際には解決されません。それはもはやスケールされませんが、すぐに新しいフレームサイズにポップオーバーします。 UIViewContentModeRedrawに設定すると、アニメーション中にdrawRectを呼び出すようには見えません。 – tcurdt