【发布时间】:2016-12-12 14:18:01
【问题描述】:
我有这个相当简单的IBDesignable RoundedLabel。它在 Interface Builder 中以及在模拟器中运行时呈现良好。如果我将视图添加到UIStackView 中,即使它在 IB 中渲染得很好,圆角半径也只应用于左上角。
import UIKit
@IBDesignable class RoundedLabel: UILabel {
@IBInspectable var cornerRadius : CGFloat = 46 {
didSet {
self.drawTheLabel()
}
}
@IBInspectable var roundRightCorners : Bool = false {
didSet {
self.drawTheLabel()
}
}
@IBInspectable var roundLeftCorners : Bool = false {
didSet {
self.drawTheLabel()
}
}
@IBInspectable var borderRadius : CGFloat = 3 {
didSet {
self.layer.borderWidth = borderRadius
}
}
@IBInspectable var borderColor : UIColor = .black {
didSet {
self.layer.borderColor = borderColor.cgColor
}
}
private func drawTheLabel() {
var tCorners : UIRectCorner = []
if roundRightCorners {
tCorners.insert(.topRight)
tCorners.insert(.bottomRight)
}
if roundLeftCorners {
tCorners.insert(.bottomLeft)
tCorners.insert(.topLeft)
}
let path = UIBezierPath(roundedRect:self.bounds,
byRoundingCorners:tCorners,
cornerRadii: CGSize(width: cornerRadius, height: cornerRadius))
let maskLayer = CAShapeLayer()
maskLayer.path = path.cgPath
self.layer.mask = maskLayer
self.layer.masksToBounds = true
}
}
不在uistackview时的视图
添加到uistackview时的视图
【问题讨论】:
标签: ios swift uistackview ibdesignable