我有一个自定义的 PopupView
(扩展 UIView
)。 PopupView
只包含 TextView
。
PopupView
的宽度为 220。
现在我希望 PopupView
高度取决于 TextView
高度,就像当 TextView
很短时,弹出窗口会很短。
我可以在显示 PopUp
之前计算 TextView
的高度吗?
这是我所做的,使 PopupView
高度取决于 TextView
高度。
- 我显示 PoupView 的宽度和高度 = 屏幕宽度和高度
- 之后我计算 TextView
绘制后的高度(在 layoutSubviews
中)
- 然后我更新 PopupView 高度
=> 如果我能在绘制之前获取 TextView
高度,那就更好了
- (void)layoutSubviews{
[self.textView layoutIfNeeded];
CGSize sizeThatShouldFitTheContent = [self.contentTextView sizeThatFits:self.textView .frame.size]; // this return correct value of `TextView` height
// After I get textview height, I update contraint height of PopupView
}
最佳答案
这不是你要求的,但它可能是你需要的:只需删除弹出 View 的高度约束,并禁用 TextView 的滚动(如果启用滚动,默认高度为 0,否则 TextView 会自动调整大小以适应内容)。这样弹出窗口将包装 TextView 。
你需要像这样设置约束:
TextView.Top = Popup.Top
TextView.Left = Popup.Left
TextView.Right = Popup.Right
TextView.Bottom = Popup.Bottom
Popup.Width = <some fixed value> //Yay! Stairs :)
您可以通过编程方式禁用滚动:textView.scrollingEnabled = NO;
或通过界面构建器。
关于IOS - 是否可以在绘制之前计算 TextView 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36148475/