【发布时间】:2017-03-01 23:08:23
【问题描述】:
我创建了一个简单的 UIView 类,它将在运行时显示标签。
@IBDesignable
class CalendarDayView: UIView {
var dayLabel = UILabel()
@IBInspectable
var day: Int {
set {
dayLabel.text = String(newValue)
}
get {
return Int(dayLabel.text!)!
}
}
override init(frame: CGRect) {
super.init(frame: frame)
prepareSubviews()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
prepareSubviews()
}
func prepareSubviews() {
dayLabel.backgroundColor = UIColor.blue
addSubview(dayLabel)
dayLabel.centerXAnchor.constraint(equalTo: self.centerXAnchor)
dayLabel.centerYAnchor.constraint(equalTo: self.centerYAnchor)
dayLabel.widthAnchor.constraint(equalTo: self.widthAnchor)
dayLabel.heightAnchor.constraint(equalTo: self.heightAnchor)
setNeedsLayout()
}
}
我在情节提要的一个简单视图控制器上添加了一个 UIView,并将其宽度和高度设置为 100。在属性检查器中,将天值设置为 1。
我看不到自定义视图背景颜色(应该是蓝色),也看不到标签(应该显示 1)。我错过了什么吗?
【问题讨论】:
-
dayLabel的宽高你设置了吗? -
自动布局约束不应该解决这个问题吗?
-
但是,您可能需要设置
dayLabel.translatesAutoresizingMaskIntoConstraints = false -
另外,您是否明确设置了
CalendarDayView的框架?尝试在框架初始化并添加到您添加到的任何超级视图后放置一个断点并打印出框架。 -
这并不能解决我的自定义视图背景颜色未显示的原因。