如何為UIView的左上角和右上角設置角半徑?有沒有辦法cornerRadius的左上角和右上角UIView?我試過以下幾種方法,但最后都看不到風景了。UIView *view = [[UIView alloc] initWithFrame:frame];CALayer *layer = [CALayer layer];UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRoundedRect:frame byRoundingCorners:(UIRectCornerTopLeft|UIRectCornerTopRight) cornerRadii:CGSizeMake(3.0, 3.0)];layer.shadowPath = shadowPath.CGPath;view.layer.mask = layer;
3 回答

森林海
TA貢獻2011條經驗 獲得超2個贊
SWIFT 4
override func layoutSubviews() { super.layoutSubviews() roundCorners(corners: [.topLeft, .topRight], radius: 3.0)}
extension UIView { func roundCorners(corners: UIRectCorner, radius: CGFloat) { let path = UIBezierPath(roundedRect: bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius)) let mask = CAShapeLayer() mask.path = path.cgPath layer.mask = mask }}

收到一只叮咚
TA貢獻1821條經驗 獲得超5個贊
我不知道為什么您的解決方案不起作用,但下面的代碼對我有用。創建一個Bezier掩碼并將其應用到您的視圖中。在下面的代碼中,我正在舍入_backgroundView
半徑為3像素。self
是一種習俗UITableViewCell
:
UIBezierPath?*maskPath?=?[UIBezierPath ????bezierPathWithRoundedRect:self.backgroundImageView.bounds ????byRoundingCorners:(UIRectCornerBottomLeft?|?UIRectCornerBottomRight) ????cornerRadii:CGSizeMake(20,?20)];CAShapeLayer?*maskLayer?=?[CAShapeLayer?layer];maskLayer.frame?=?self.bounds;maskLayer.path?=?maskPath.CGPath;self.backgroundImageView.layer.mask?=?maskLayer;
有一些改進的SWIFT版本:
let?path?=?UIBezierPath(roundedRect:viewToRound.bounds,?byRoundingCorners:[.TopRight,?.BottomLeft],?cornerRadii:?CGSizeMake(20,?20))let?maskLayer?=?CAShapeLayer()maskLayer.path?=?path.CGPathviewToRound.layer.mask?=?maskLayer
SWIFT 3.0版本:
let?path?=?UIBezierPath(roundedRect:viewToRound.bounds, ????????????????????????byRoundingCorners:[.topRight,?.bottomLeft], ????????????????????????cornerRadii:?CGSize(width:?20,?height:??20))let?maskLayer?=?CAShapeLayer()maskLayer.path?=?path.cgPath viewToRound.layer.mask?=?maskLayer

四季花海
TA貢獻1811條經驗 獲得超5個贊
extension UIView { func roundCorners(_ corners: UIRectCorner, radius: CGFloat) { let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius)) let mask = CAShapeLayer() mask.path = path.cgPath self.layer.mask = mask }}
view.roundCorners([.topLeft, .bottomRight], radius: 10)
注
UIView
roundCorners
layoutSubviews
class View: UIView { override func layoutSubviews() { super.layoutSubviews() self.roundCorners([.topLeft, .bottomLeft], radius: 10) }}
- 3 回答
- 0 關注
- 933 瀏覽
添加回答
舉報
0/150
提交
取消