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

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


当前回答

如果圆角在viewDidload()中不起作用,最好在viewDidLayoutSubview()中编写代码

-(void)viewDidLayoutSubviews
{
    viewTextfield.layer.cornerRadius = 10.0 ;                                               
    viewTextfield.layer.borderWidth = 1.0f;
    viewTextfield.layer.masksToBounds =  YES;
    viewTextfield.layer.shadowRadius = 5;
    viewTextfield.layer.shadowOpacity = 0.3;
    viewTextfield.clipsToBounds = NO;
    viewTextfield.layer.shadowOffset = CGSizeMake(0.0f, 0.0f);
}

希望这能有所帮助!

其他回答

Swift 4 -使用IBDesignable

   @IBDesignable
    class DesignableView: UIView {
    }

    extension UIView
    {

        @IBInspectable
        var cornerRadius: CGFloat {
            get {
                return layer.cornerRadius
            }
            set {
            layer.cornerRadius = newValue
        }
    }
}
UIView* viewWithRoundedCornersSize(float cornerRadius,UIView * original)
{
    // Create a white border with defined width
    original.layer.borderColor = [UIColor yellowColor].CGColor;
    original.layer.borderWidth = 1.5;

    // Set image corner radius
    original.layer.cornerRadius =cornerRadius;

    // To enable corners to be "clipped"
    [original setClipsToBounds:YES];
    return original;
}

你也可以使用界面构建器的用户定义运行时属性特性来设置关键路径层。拐角半径为一个值。确保你包含了QuartzCore库。

这个技巧也适用于设置图层。然而,borderWidth并不适用于图层。borderColor,因为它需要CGColor而不是UIColor。

您将无法在故事板中看到效果,因为这些参数是在运行时计算的。

- 斯威夫特

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

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

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

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

现在你可以在UIView中使用一个快速的类别(代码如下图所示),在@IBInspectable中显示在故事板上的结果(如果你正在使用类别,只使用拐角半径,而不是图层。cornerRadius作为关键路径。

extension UIView {
    @IBInspectable var cornerRadius: CGFloat {
        get {
            return layer.cornerRadius
        }
        set {
            layer.cornerRadius = newValue
            layer.masksToBounds = newValue > 0
        }
    }
}