私は画像で色を塗りつぶし、UIBezierPath
を使用してコーナーのポイントを消去する機能があります。ベジエパスの外側を外します
CGRect rect = CGRectMake(0.0f, 0.0f, width, height);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetBlendMode(context, kCGBlendModeCopy);
// Fill image
CGContextSetFillColorWithColor(context, [[UIColor redColor] CGColor]);
CGContextFillRect(context, rect);
// Round corners
UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:15.0];
CGContextSetStrokeColorWithColor(context, [[UIColor clearColor] CGColor]);
[bezierPath stroke];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
上記を使用すると、ベジエのパスが切り取られ、背景が塗りつぶされたイメージが得られます。
しかし、パスの外にあるコーナーを削除するにはどうすればよいですか、またはどこにあるかを参照してクリアすることができますか?
パスを描画するのではなく、イメージをそのパスにマスクする必要があります。 – Rob
ところで、実際には丸みを帯びたコーナーのイメージを作成する必要があります。なぜなら、UIの丸みのあるコーナーだけを望むならば、ビューの 'layer'の' cornerRadius'を設定することができるからです。 – Rob
@Rob悲しいことに、私はこれをやっている方法でビュー自体を変更することができないので、イメージを使用する必要があります。ありがとう、私はマスキングをチェックアウトします。 – Spotlight