IOS - 是否可以在绘制之前计算 TextView 高度

标签 ios uitextview

我有一个自定义的 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/

相关文章:

ios - 具有自定义自动更正功能的 UITextView

iphone - 无法更改 TextView 中的文本

javascript - iOS Safari 中的持久本地存储问题

ios - 如何在 Swift 中将 SnapKit ConstraintItem 转换为整数?

ios - 如何在一个 View Controller 中快速将占位符设置为多个 TextView

iphone - 可以在不使用 UITextField 和 UITextView iphone 应用程序的情况下显示键盘吗?

swift - 在 TextView 中选择某些内容时触发操作 - Swift

ios - AFNetworking 参数序列化错误

ios - 带有 Alamofire 4 正文数据的 POST 请求

iphone - 如何将scrollViewWillBeginDragging限制为仅一个发送者对象?