検索

ホームページ  >  に質問  >  本文

ios - 使用UIBezierPath给view切圆角,为什么只对一边有效?

我写了一个方法,用来给控件指定的角切圆角,方法如下

- (void)maskToCorner:(UIView *)view RoundingCorners:(UIRectCorner)corner cornerRedius:(CGSize)size {
    UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:view.bounds
                                                   byRoundingCorners:corner
                                                         cornerRadii:size];
    
    CAShapeLayer *maskLayer = [[CAShapeLayer alloc]init];
    maskLayer.frame = view.bounds;
    maskLayer.path = maskPath.CGPath;
    view.layer.mask = maskLayer;
}
调用方法如下:
  [_tools maskToCorner:self.cardView RoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRedius:CGSizeMake(10.0f,10.0f)];

结果只能使左上角变成圆角,右上角并没有被切,无论CGSizeMake(width,height)中的width变为多大,都只是左上角起了作用,现在不知道产生这个问题的原因是什么,还请指教。谢谢。

高洛峰高洛峰2773日前832

全員に返信(3)返信します

  • 巴扎黑

    巴扎黑2017-04-17 17:37:19

    まったく同じコードを使用しましたが、丸い角を問題なくカットできました...

    そのメソッドに view.clipToBounds = YES; を追加してみてはいかがでしょうか?

    返事
    0
  • PHP中文网

    PHP中文网2017-04-17 17:37:19

    この問題は解決しましたか?私も同じ問題に遭遇しました。アドバイスをお願いします

    返事
    0
  • 怪我咯

    怪我咯2017-04-17 17:37:19

    リーリー

    返事
    0
  • キャンセル返事