UIView
レイヤーマスクを追加して、サブクラスに丸い角を追加しました。以下はMontouchコードですが、ObjCでも意味を理解するのに十分簡単なはずです:
// Add a layer that holds the rounded corners.
UIBezierPath oMaskPath = UIBezierPath.FromRoundedRect (this.Bounds, this.eRoundedCorners, new SizeF (this.fCornerRadius, this.fCornerRadius));
private void UpdateMask()
{
if(this.Layer.Mask == null)
{
CAShapeLayer oMaskLayer = new CAShapeLayer ();
oMaskLayer.Frame = this.Bounds;
// Set the newly created shape layer as the mask for the image view's layer
this.Layer.Mask = oMaskLayer;
}
((CAShapeLayer)this.Layer.Mask).Path = oMaskPath.CGPath;
}
Frame
プロパティをオーバーロードしました。フレームを設定すると、丸みを帯びた角の形状を維持するようにマスクが調整されます。
ただし、フレーム サイズの変化をアニメーション化すると、代わりにマスクがすぐにアニメーションの目的の値に設定されます。
ビューがアニメーションの一部であることを検出し、マスクを正しくアニメーション化する方法はありますか?