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
在 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
中获得圆形 UIViewview.layer.cornerRadius = 10;
view.clipsToBounds = true