gpt4 book ai didi

ios - 如何以编程方式制作 UIView,其高度为其中 textLabels 的高度? ( swift )

转载 作者:行者123 更新时间:2023-11-30 13:12:48 25 4
gpt4 key购买 nike

我正在尝试制作每个包含不同文本语句的 UIView(在 UITextView 中)。可以有不同数量的 View ,并且每个语句的长度可以不同。我使用这些 View

let newView = DragView(heightOfView: ???, viewNumber: i, heightFromTop: currentHeightForThings)

然后,在 DragView 类中,我使用 viewNumber 访问该语句,并将该语句放入我制作的 nib 文件的文本标签中。

我的问题是我没有什么可以放入 heightOfView 中。我想要的高度是 textLabel 的高度,它根据语句的 textView 中有多少行而变化。但是我无法访问这个高度,因为 textLabel 尚未构建。

提前致谢,我是 Swift 新手,但想快速学习,所以如果我遗漏了一些明显的东西,我深表歉意!

<小时/>

这是我在 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 是我添加到 View 上以移动 View 的 subview 。

最佳答案

您可以重写 DragViewsizeThatFits 方法,使其根据 statementLabel 的高度返回高度。您必须首先在 textView 上调用 sizeToFit,这将设置该 View 的高度,然后根据该高度返回一个高度。

override func sizeThatFits(size: CGSize) -> CGSize {
self.statementLabel.sizeToFit()
return CGSize(
width: self.frame.width,
height: self.statementLabel.frame.height)
}

此外,如果您要进行编程布局,我建议您查看 sizeThatFitslayoutSubviews。 subview 的大小调整和定位应该在 layoutSubviews 中进行,而不是在 init 中进行。

关于ios - 如何以编程方式制作 UIView,其高度为其中 textLabels 的高度? ( swift ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38551517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com