繁体   English   中英

设置UIButton的TopLeft和bottomLeft半径 的iOS

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM