CGAffineTransformMakeScale を使用して UIView をスケーリングしていますが、スケーリング時に現在の上部中心点に固定したままにしたいと考えています。
設定を調べましたが、アンカーポイントの変更を考慮しview.layer.anchorPoint
て設定と組み合わせて使用する必要があると思います。view.layer.position
誰かが私を正しい方向に向けることができれば、私はとても感謝しています!
CGAffineTransformMakeScale を使用して UIView をスケーリングしていますが、スケーリング時に現在の上部中心点に固定したままにしたいと考えています。
設定を調べましたが、アンカーポイントの変更を考慮しview.layer.anchorPoint
て設定と組み合わせて使用する必要があると思います。view.layer.position
誰かが私を正しい方向に向けることができれば、私はとても感謝しています!
ここで私の回答を見て、アンカーポイントを変更したときにビューが移動する理由を理解してください: https://stackoverflow.com/a/12208587/77567
したがって、ビューの変換セットを ID に設定することから始めます。ビューが変換されていない場合、その上端の中心を見つけます。
CGRect frame = view.frame;
CGPoint topCenter = CGPointMake(CGRectGetMidX(frame), CGRectGetMinY(frame));
次に、アンカーポイントを上端の中央に向けます。
view.layer.anchorPoint = CGPointMake(0.5, 0);
これで、レイヤーposition
(またはビューcenter
) の は、レイヤーの上端の中心の位置になります。ここで停止すると、上端の中心がアンカーポイントを変更する前の真の中心になるようにレイヤーが移動します。そのため、レイヤーposition
を少し前から上端の中央に変更します。
view.layer.position = topCenter;
レイヤーは画面上の同じ場所にとどまりますが、そのアンカー ポイントは上端の中心であるため、スケールと回転はそのポイントを固定したままにします。