在xcode中使用swift时,使用View Width无法正确调整后续uilabel的大小

时间:2015-11-03 01:04:21

标签: ios iphone xcode swift

好的,所以我把问题简化为最基本的形式。我的视图宽度是主视图的0.7倍。我正在以编程方式将UILabel添加到该视图中,我试图使其大小相同。然后我将大小打印到2个视图中以进行调试。

这是我的代码:

  let test = trackerView.bounds.size.width

    let testLabel = UILabel(frame: CGRectMake(0,0,test,30))
    testLabel.backgroundColor = UIColor.blueColor()
    trackerView.addSubview(testLabel)


    lblStageDescription.text = testLabel.bounds.width.description
    lblTime.text = trackerView.bounds.width.description

这就是我的模拟器的样子

Picture of the broken sizing problem I am having

蓝色是TestLabel,它下面的白色部分是trackerView。

然后2个数字420.0是宽度打印出来的地方。

对于UILabel和UIView的大小调整有什么不同吗?我错过了什么吗?任何帮助将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

代码是什么方法?你在使用自动布局吗?你在测试什么设备?如果它是iPhone,则420点比视图控制器的视图宽。只能推测您已经使用了自动布局,然后在应用约束之前在viewdidload中添加了视图。导致trackerview重新调整大小。尝试将代码移至viewdidappear或viewdidlayoutsubviews。

let testLabel = UILabel(frame: CGRectMake(0,0,test,30))
    testLabel.backgroundColor = UIColor.blueColor()
    trackerView.addSubview(testLabel) 

这是创建标签的代码。我不确定您在IB中创建的标签,但这是一个带初始化程序的声明,因此您的代码与它进行交互,默认情况下没有约束。您可以设置trackerView.clipToBounds = true,以便其子视图不会超出其范围,但标签也会被剪裁。