[背景]
一个UITableViewCell中的contentView中的UILabel
在init函数中初始化属性,但是没有设置text内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | let timestampLabelTextColor = UIColor.whiteColor() let timestampBackgroundColor = UIColor(white: 0.734, alpha: 1.0) let timestampLabel = UILabel(frame: CGRectMake(0, LabelPadding, UIScreen.mainScreen().bounds.size.width, TimeStampLabelHeight)) //timestampLabel.text = "" timestampLabel.autoresizingMask = [UIViewAutoresizing.FlexibleWidth, UIViewAutoresizing.FlexibleHeight] timestampLabel.textColor = timestampLabelTextColor timestampLabel.backgroundColor = timestampBackgroundColor timestampLabel.textAlignment = NSTextAlignment.Center timestampLabel.font = UIFont.boldSystemFontOfSize(TimeStampLabelFont) //timestampLabel.center.x = 350 timestampLabel.numberOfLines = 1 timestampLabel.sizeToFit() self.timestampLabel = timestampLabel print( "timestampLabel.frame=\(timestampLabel.frame)" ) self.contentView.addSubview(timestampLabel) self.contentView.bringSubviewToFront(timestampLabel) |
然后在后续的函数
configureCell
中去设置内容:
1 2 3 4 5 6 7 8 9 10 11 | override func layoutSubviews() { super.layoutSubviews() print( "after layoutSubviews, timestampLabel.frame=\(timestampLabel?.frame)" ) } configureCell{ self.timestampLabel?.text = "昨天 22:08" timestampLabel?.setNeedsLayout() print( "self.timestampLabel?.text=\(self.timestampLabel?.text)" ) } |
但是:
after layoutSubviews, timestampLabel.frame=Optional((0.0, 5.0, 55.0, 0.0))
并且,里面的label中text中的文字内容,也不显示。
[解决过程]
1.搜:
swift UILabel autoresizingMask
swift UILabel autoresizingMask not work
swift UITableViewCell contentView not show
参考:
才知道:
指的是:控件相对于父视图坐标值
而不是控件自己的内部的大小
后来是:
init时设置text的值
就可以了。。。