在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”,但Idk为什么。我正在研究swift 4和Xcode 9。
为什么它不能在swift 4中工作?
答案 0 :(得分:21)
我已经尝试过您的代码,并且它可以在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
}
}
}
这是结果:
答案 1 :(得分:1)
此解决方案对我来说很有效,可以在Swift 5中获取圆形的UIView
view.layer.cornerRadius = 10;
view.clipsToBounds = true
答案 2 :(得分:0)
您的代码似乎在Swift 4.0中使用新项目正常工作。但是,if you are using a Storyboard and its set as LaunchScreen too, you won't be able to use custom classes directly there。
在这种情况下,只需取消选中用作启动屏幕,您就可以再次构建。
答案 3 :(得分:0)
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)