[英]Set TopLeft & bottomLeft radius of a UIButton | iOS
我想设置UIButton的左上角/左下角半径。 我怎样才能做到这一点?
如果我使用button.layer.cornerRadius
,它将设置所有角落。
我尝试使用UIBazierPath ,但是可能我在做错什么,并且按钮没有正确显示。 我使用的代码是:
let path = UIBezierPath(roundedRect: button.bounds, byRoundingCorners: [.TopLeft, .BottomLeft], cornerRadii: CGSize(width: 3.0, height: 3.0))
let mask = CAShapeLayer()
mask.path = path.CGPath
button.layer.mask = mask
我尝试了从stackoverflow的答案,即这,但它对我不起作用。 它不仅可以更新边角,还可以降低按钮的高度。 我认为我在边框/边界方面做错了。
使用上面的代码,UIButton显示为:
我使用的另一个解决方案是使用带有圆角的图像。 但现在我想以编程方式执行此操作。
谢谢。
您的布局有变化吗? 例如,如果将代码放在UIViewController
viewDidLoad
,并且视图通过自动布局调整大小,则可能会发生这种情况。 如果将代码移至viewDidLayoutSubviews
则它应该可以工作。
我已经通过使用以下方法在目标C中实现了这一目标:
-(void)setMaskTo:(UIView*)view byRoundingCorners:(UIRectCorner)corners
{
UIBezierPath* rounded = [UIBezierPath bezierPathWithRoundedRect:view.bounds
byRoundingCorners:corners
cornerRadii:CGSizeMake(8.0, 8.0)];
CAShapeLayer* shape = [[CAShapeLayer alloc] init];
[shape setPath:rounded.CGPath];
view.layer.mask = shape;
}
以这种方式调用上述方法:
[self setMaskTo:self.myButton byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerTopLeft];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.