このUIViewブロックベースのアニメーションコードの正確な「翻訳」を作成しようとしています。
[UIView animateWithDuration:0.5
delay:0.0
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
someView.frame = CGRect(0, 100, 200, 200);
}
completion:nil];
代わりにCABasicAnimationを使用します。
ここで説明されているように、フレームプロパティは実際には、基になるレイヤーの位置、境界、およびアンカーポイントの組み合わせであることを完全に認識しています: http : //developer.apple.com/library/mac/#qa/qa1620/_index .html
...そして私はすでにそのようなソリューションを作成しました。2つのCABasicAnimationsを使用して、1つは位置を設定し、もう1つは境界用であり、その1つのビューで機能します。
ただし、問題は、ビュー内にサブビューがあることです。someViewには、タイプUIScrollViewのサブビューがあり、タイプUIImageViewのさらに別のサブビューを配置します。UIScrollViewサブビューでは、autoresizingMaskがUIViewAutoresizingFlexibleWidth |に設定されています。UIViewAutoresizingFlexibleHeight。UIViewブロックベースのバージョンを使用すると、すべてが完全に機能しますが、 CABasicAnimationsを使用しようとすると、サブビューが予期しない動作を開始します(つまり、サイズが正しくない幅になります)。したがって、CABasicAnimationsを使用すると、autoresizingMaskが正しく機能していないようです。サブビューがへの呼び出しを受け取らないことにも気づきましたsetFrame:、ただし、親ビューのフレームプロパティは、レイヤーの位置と境界が変更された後に変更されます。
そのため、UIViewのanimateWithDurationメソッドを使用したときに何が起こっているのかをCABasicAnimationで複製するための正しいコードを知りたいのです。