我试图制作UIViews,每个UIViews包含不同的文本语句(在UITextViews中)。可以有不同数量的视图,每个语句的长度可以不同。我使用
制作这些视图let newView = DragView(heightOfView: ???, viewNumber: i, heightFromTop: currentHeightForThings)
在DragView类中,我然后使用viewNumber访问该语句,并将该语句放在我已经制作的nib文件的文本标签中。
我的问题是我没有任何东西放在heightOfView中。我想要的高度是textLabel的高度,它取决于该语句的textView中有多少行。但是我无法访问此高度,因为textLabel尚未构建。
在此先感谢,我是新手,但我想快速学习,所以如果我错过了一些明显的东西我会道歉!
下面是我在DragView类中的代码
class DragView: UIView {
@IBOutlet var dragView: UIView!
@IBOutlet weak var statementLabel: UITextView!
var dropTarget: UIView?
var viewNumber: Int!
init(heightOfView: Int, viewNumber:Int, heightFromTop: Int) {
self.viewNumber = viewNumber
let startingPosition = CGRect(x: Int(widthCentre) - dragViewWidth / 2, y: heightFromTop, width: dragViewWidth, height: heightOfView)
super.init(frame: startingPosition)
NSBundle.mainBundle().loadNibNamed("DragView", owner: self, options: nil)
self.addSubview(self.dragView)
let movingView = MovingView(frame: startingPosition)
self.addSubview(movingView)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
这里的movingView是我在视图上添加的子视图,用于移动视图。
答案 0 :(得分:0)
您可以覆盖DragView
的{{1}}方法,让它根据sizeThatFits
的高度返回高度。您必须先在statementLabel
上调用sizeToFit
,然后设置该视图的高度,然后根据该高度返回一个高度。
textView
此外,如果您要进行编程布局,我建议您查看override func sizeThatFits(size: CGSize) -> CGSize {
self.statementLabel.sizeToFit()
return CGSize(
width: self.frame.width,
height: self.statementLabel.frame.height)
}
和sizeThatFits
。子视图的大小和位置应该在layoutSubviews
而不是layoutSubviews
中进行。