Ios 未在IB中创建UILabel的换行?

Ios 未在IB中创建UILabel的换行?,ios,swift,cocoa-touch,uilabel,Ios,Swift,Cocoa Touch,Uilabel,我正在尝试完全用代码而不是IB创建UILabel 我希望x、y角的位置和宽度是固定的,但高度会根据显示的文本数量而变化,文本要换行并居中。文本是从其他地方填充的。(但通常不会超过2行) 我已经完成了这一步,但不确定如何设置高度变量并使文本换行: instructLabel = UILabel(frame: CGRectMake(ScreenWidth/2-350, ScreenHeight-ScreenHeight*0.2, 700, 50)) // Guess I don't want the

我正在尝试完全用代码而不是IB创建
UILabel

我希望x、y角的位置和宽度是固定的,但高度会根据显示的文本数量而变化,文本要换行并居中。文本是从其他地方填充的。(但通常不会超过2行)

我已经完成了这一步,但不确定如何设置高度变量并使文本换行:

instructLabel = UILabel(frame: CGRectMake(ScreenWidth/2-350, ScreenHeight-ScreenHeight*0.2, 700, 50)) // Guess I don't want the 50 height here though?
instructLabel.backgroundColor = UIColor.blackColor()

instructLabel.preferredMaxLayoutWidth = 700 // does this conflict with above or override?
instructLabel.lineBreakMode = .ByWordWrapping
instructLabel.textAlignment = NSTextAlignment.Center

instructLabel.text = ""
instructLabel.font = FontSmall
instructLabel.textColor = UIColor.whiteColor()
self.addSubview(instructLabel)

您应该使用
CGRectGetMidX
CGRectGetMidY
常量,而不是计算屏幕宽度和屏幕高度值

instructLabel = UILabel(frame: CGRectMake(CGRectGetMidX(self.view.frame),CGRectGetMidY(self.view.frame),self.view.frame,self.view.frame))

是否要使用自动布局?您需要设置
指令label.numberOfLines=0
以允许其增长。默认值为1,这将导致截断而不是新行。或者将其设置为所需的最大行数。我会对所有这些和自动布局使用约束。嗨,Bannings-如果可能的话,我想尝试在代码中实现它!非常感谢Rory。现在一切正常!即使该类是UIView类型,但它没有名为“view”的成员。self.bounds可能对UIView有效