我的登录视图有一个子视图,它有一个UIActivityView和一个UILabel,上面写着“Signing In…”这个子视图有不圆角的角。我怎样才能把它们变圆呢?

有什么办法在我的xib里面做吗?


当前回答

view.layer.cornerRadius = 25
view.layer.masksToBounds = true

其他回答

斯威夫特

简短的回答:

myView.layer.cornerRadius = 8
myView.layer.masksToBounds = true  // optional

补充回答

如果你得到了这个答案,你可能已经看到了足够解决你的问题的东西。我添加这个答案是为了更直观地解释事物为什么会这样做。

如果你从一个普通的UIView开始,它有方角。

let blueView = UIView()
blueView.frame = CGRect(x: 100, y: 100, width: 100, height: 50)
blueView.backgroundColor = UIColor.blueColor()
view.addSubview(blueView)

你可以通过改变视图层的cornerRadius属性来给它圆角。

blueView.layer.cornerRadius = 8

半径值越大,圆角越圆润

blueView.layer.cornerRadius = 25

数值越小,圆角越小。

blueView.layer.cornerRadius = 3

这可能足够解决你的问题了。然而,有时视图可以有超出视图边界的子视图或子层。例如,如果我要添加这样的子视图

let mySubView = UIView()
mySubView.frame = CGRect(x: 20, y: 20, width: 100, height: 100)
mySubView.backgroundColor = UIColor.redColor()
blueView.addSubview(mySubView)

或者我像这样添加一个子图层

let mySubLayer = CALayer()
mySubLayer.frame = CGRect(x: 20, y: 20, width: 100, height: 100)
mySubLayer.backgroundColor = UIColor.redColor().CGColor
blueView.layer.addSublayer(mySubLayer)

然后我就会得到

现在,如果我不希望有东西在边界外,我可以这样做

blueView.clipsToBounds = true

或者这个

blueView.layer.masksToBounds = true

结果是这样的:

clipsToBounds和masksToBounds都是等价的。只是第一个用于UIView,第二个用于CALayer。

另请参阅

如何添加边界和阴影 贝塞尔曲线路径 转换

Swift 4 -使用IBDesignable

   @IBDesignable
    class DesignableView: UIView {
    }

    extension UIView
    {

        @IBInspectable
        var cornerRadius: CGFloat {
            get {
                return layer.cornerRadius
            }
            set {
            layer.cornerRadius = newValue
        }
    }
}

设置圆形视图的转角属性

设置masksToBounds布尔值,图像将不会在角半径边界外绘制

view.layer.cornerRadius = 5;

view.layer.masksToBounds = YES;

在obj c中通过编程实现吗

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(20, 50,    200, 200)];

view.layer.backgroundColor = [UIColor whiteColor].CGColor;
view.layer.cornerRadius = 20.0;
view.layer.frame = CGRectInset(v.layer.frame, 20, 20);

[view.layer.shadowOffset = CGSizeMake(1, 0);
view.layer.shadowColor = [[UIColor blackColor] CGColor];
view.layer.shadowRadius = 5;
view.layer.shadowOpacity = .25;][1]

[self.view addSubview:view];

我们也可以从stoaryboard做这个。

 layer.cornerRadius  Number  5

- 斯威夫特

在SwiftUI中,你可以直接在任何你想要的视图上使用拐角半径修饰器。 比如这个问题:

Text("Signing In…")
    .padding(16)
    .background(Color.red)
    .cornerRadius(50)

注意,没有更多的菱形半径,所以即使你设置角半径超过高度的一半,它也会平滑圆润。

查看这个答案,了解如何在SwiftUI中圆角