我正在尝试在我的视图中添加圆角。 我创建了一个课程:
class RoundedBorder: UIView {
override func awakeFromNib() {
super.awakeFromNib()
layer.cornerRadius = 10
}
}
然后我将其应用于我的3个UIView,但是只有中间的一个(如您所见)被更新。它们在堆栈视图中。
我的应用程序的其余部分具有针对各种对象元素的自定义类,都可以正常工作。
有什么想法吗?
谢谢
答案 0 :(得分:0)
只需尝试此扩展程序
extension UIView {
func roundCorners(by radius: CGFloat) {
self.layer.cornerRadius = radius
self.layer.masksToBounds = true
}
}
并使用它:
self.roundCorners(by: 10)
答案 1 :(得分:0)
尝试一下!
这些是您可以使用的扩展,使半径阴影在按钮视图选项卡栏甚至导航栏中都可以,只需将此代码放在您的类末尾,在检查器的右侧,您可以看到可以帮助您的其他控制器:)
extension UIView {
@IBInspectable
var cornerRadius: CGFloat {
get {
return layer.cornerRadius
}
set {
layer.cornerRadius = newValue
}
}
@IBInspectable
var borderWidth: CGFloat {
get {
return layer.borderWidth
}
set {
layer.borderWidth = newValue
}
}
@IBInspectable
var borderColor: UIColor? {
get {
if let color = layer.borderColor {
return UIColor(cgColor: color)
}
return nil
}
set {
if let color = newValue {
layer.borderColor = color.cgColor
} else {
layer.borderColor = nil
}
}
}
@IBInspectable
var shadowRadius: CGFloat {
get {
return layer.shadowRadius
}
set {
layer.shadowRadius = newValue
}
}
@IBInspectable
var shadowOpacity: Float {
get {
return layer.shadowOpacity
}
set {
layer.shadowOpacity = newValue
}
}
@IBInspectable
var shadowOffset: CGSize {
get {
return layer.shadowOffset
}
set {
layer.shadowOffset = newValue
}
}
@IBInspectable
var shadowColor: UIColor? {
get {
if let color = layer.shadowColor {
return UIColor(cgColor: color)
}
return nil
}
set {
if let color = newValue {
layer.shadowColor = color.cgColor
} else {
layer.shadowColor = nil
}
}
}
}
@IBDesignable extension UIButton {
@IBInspectable var borderWidth: CGFloat {
set {
layer.borderWidth = newValue
}
get {
return layer.borderWidth
}
}
@IBInspectable var cornerRadius: CGFloat {
set {
layer.cornerRadius = newValue
}
get {
return layer.cornerRadius
}
}
@IBInspectable var borderColor: UIColor? {
set {
guard let uiColor = newValue else { return }
layer.borderColor = uiColor.cgColor
}
get {
guard let color = layer.borderColor else { return nil }
return UIColor(cgColor: color)
}
}
}
答案 2 :(得分:0)
首先:确保将clipsToBounds设置为true。 第二:awakeFromNib()并不总是被调用。实例化视图的方式有很多。例如,使用情节提要板会是init吗?(编码器aDecoder:NSCoder)
如何创建一个涵盖所有方式的基类:
class YourView: UIView {
init() {
super.init(frame: .zero)
setup()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setup()
}
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
func setup() {
// do your stuff
}
}
答案 3 :(得分:0)
添加self.clipsToBounds = true
并分配类以查看为View Image
答案 4 :(得分:0)
尝试一下:-
extension UIView {
@IBInspectable
var cornerRadius: CGFloat {
get {
return layer.cornerRadius
}
set {
layer.cornerRadius = newValue
}
}
}
将此代码放入AppDeleagte
。
并转到storyboard
,单击标签或视图以设置cornerRadius,然后转到属性并设置所需的半径。
并检查clipToBound = true
。
答案 5 :(得分:0)
- self.view.layoutIfNeeded()
在设置视图的拐角半径之前使用此代码行,如果不起作用,请在设置半径之后再使用它。