Swift 4 中的圆角 UIView

Round Corners UIView in Swift 4

在 swift 3 中,我可以做这样的事情来使我的 UIView 角变圆:

import UIKit

@IBDesignable
class DesignableView: UIView {
}

extension UIView {

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

在故事板中,我可以简单地更改它:

目前我得到了一个 "Build failed" 的 designable,但我不知道为什么。我正在研究 swift 4 和 Xcode 9.

为什么它在 swift 4 中不起作用?

您的代码似乎在 Swift 4.0 的新项目中运行良好。然而,.

在这种情况下,只需取消选中 用作启动屏幕,您应该可以再次构建。

我试过你的代码,它在 iOS 11.1 和 Swift 4.0 上运行良好。 (正如你所提到的,它向你显示了一个错误,但它没有向我显示任何错误)

@IBDesignable
class RoundUIView: UIView {

    @IBInspectable var borderColor: UIColor = UIColor.white {
        didSet {
            self.layer.borderColor = borderColor.cgColor
        }
    }

    @IBInspectable var borderWidth: CGFloat = 2.0 {
        didSet {
            self.layer.borderWidth = borderWidth
        }
    }

    @IBInspectable var cornerRadius: CGFloat = 0.0 {
        didSet {
            self.layer.cornerRadius = cornerRadius
        }
    }

}

这是结果


更新:
即使您更新后的代码也能正常工作。

@IBDesignable
class DesignableView: UIView {
}

extension UIView {

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

这是它的结果:

public func RoundFrameBackground(_ aView: UIView!, borderWidth: CGFloat!, cornerRadius: CGFloat!, borderColor: UIColor, backgroundColor: UIColor) {
    aView.layer.borderWidth = borderWidth ; aView.layer.borderColor = borderColor.cgColor
    aView.backgroundColor = backgroundColor ; aView.clipsToBounds = true
    aView.layer.cornerRadius = cornerRadius
}

public func RoundFrameOnly(_ aView: UIView!, cornerRadius: CGFloat!) {
    aView.clipsToBounds = true
    aView.layer.cornerRadius = cornerRadius
}

使用:

RoundFrameBackground(*a view*, borderWidth: 1, cornerRadius: 10, borderColor: UIColor.red, backgroundColor: UIColor.blue)

RoundFrameOnly(*a view*, cornerRadius: 10)

这个解决方案让我在 Swift 5

中获得圆形 UIView
view.layer.cornerRadius = 10;
view.clipsToBounds  =  true