UIViewのアニメーションの基準点を変更する

UIViewのアニメーションの基準点はデフォルトでは中心だが、 アニメーションによっては基準点を端に寄せたりする必要が出てくる。 そんなときはUIViewのlayerプロパティ(CALayer)のanchorPointプロパティを変更する。

view.layer.anchorPoint=CGPoint(0, 0) // 左上
view.layer.anchorPoint=CGPoint(0, 1) // 左下
view.layer.anchorPoint=CGPoint(0.5, 0.5) // 中央(デフォルト)
view.layer.anchorPoint=CGPoint(1, 0) // 右上
view.layer.anchorPoint=CGPoint(1, 1) // 右下

しかし、アンカーポイントを変更すると元の位置とは異なった場所に配置されてしまう。 そのため、アンカーポイントを変更する際は、変更前のframeを保存しておくと、 変更前の位置と同じ位置にレイアウトできる。

let frame = view.frame
view.layer.anchorPoint = CGPoint(0.5, 1) // 中央下端
view.frame = frame

// 以下にアニメーション処理