1. ホーム
  2. ios

[解決済み] UIViewで2つの角を丸める

2023-06-22 19:27:52

質問

少し前に、私は ビューの2つの角だけを丸める に関する質問を投稿し、素晴らしい回答を得ましたが、それを実装するのに問題があります。以下は、私のdrawRect:メソッドです。

- (void)drawRect:(CGRect)rect {
    //[super drawRect:rect]; <------Should I uncomment this?
    int radius = 5;
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextBeginPath(context);
    CGContextAddArc(context, rect.origin.x + radius, rect.origin.y + rect.size.height - radius, radius, M_PI, M_PI / 2, 1);
    CGContextAddArc(context, rect.origin.x + rect.size.width - radius, rect.origin.y + rect.size.height - radius, radius, M_PI / 2, 0.0f, 1);
    CGContextClosePath(context);
    CGContextClip(context);
}

メソッドは呼び出されていますが、ビューの結果には影響しないようです。何か理由があるのでしょうか?

どのように解決するのですか?

CACornerMask はiOS 11で導入され、ビューレイヤーのtopleft, topright, bottomleft, bottom rightを定義するのに便利なマスクです。以下は使用例です。

ここでは、上2つの角だけを丸くしてみました。

myView.clipsToBounds = true
myView.layer.cornerRadius = 10
myView.layer.maskedCorners = [.layerMinXMinYCorner,.layerMaxXMinYCorner]

参考資料