我试图使每个包含不同的文本语句的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是一个子视图,我添加了该视图以移动该视图。
您可以覆盖DragView
的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
而不是在进行init
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句