【发布时间】:2016-04-26 10:45:34
【问题描述】:
嘿,所以我在UIView 中有一个UITextView,我动态加载内容。我正在使用this solution调整文本视图的高度
我已关闭自动布局以使其正常工作(sizeToFit() 等其他解决方案无法使用自动布局开启)但是当我这样做时,即使文本视图的所有内容都被渲染,它也会溢出它的边界包含UIView。
我尝试使用同样适用于其容器上的文本视图的解决方案,但没有任何作用。
似乎确实有效的一件事是:
newFrame = containerView.frame
newFrame.size.height = textView.frame.size.height
containerView.frame = newFrame
但这不是我需要的,因为我在这个容器视图中还有几个标签,所以它的高度不能与文本字段的高度相同。
有没有办法在不再次打开自动布局的情况下解决这个问题? (打开自动布局会有帮助吗?)如果打开自动布局可以解决这个问题,那么有没有办法保持文本视图的动态大小(因为打开它会破坏它)?
我对此很陌生。感谢您的帮助。
哦,我实际上是在开发一个 tvOS 应用程序,而不是 iOS 应用程序。不知道这是否会有所作为。
编辑:
这是实际代码:
@IBOutlet weak var container: UIView!
@IBOutlet weak var label: UILabel!
@IBOutlet weak var text: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
print(text.frame.origin.x, text.frame.origin.y)
text.scrollEnabled = false
text.text = "bla blah blah blah boo boo boo boooooo boo blah yo yo yo yo yo hello"
let fixedWidth = text.frame.size.width
let newSize = text.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max))
var newFrame = text.frame
newFrame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height)
text.frame = newFrame
}
这会在内容更改时动态扩展文本视图。添加:
newFrame = containerView.frame
newFrame.size.height = textView.frame.size.height
containerView.frame = newFrame
调整容器UIView 的大小,但将文本视图的text.frame.origin.y 设为0。因此向容器中添加任何其他元素只会与文本视图重叠。
【问题讨论】:
标签: ios xcode swift tvos tvos9.1