ios - Swift UIScrollView 高度取决于 UITextView 内容

标签 ios swift uiscrollview uitextview

我有一个 UIScrollView,里面有多个 View ,其中一个是 UITextView。我正在尝试设置 ScrollView 的高度以匹配内容。问题是 UITextView 的高度根据它包含的文本而变化。此内容是在 View Controller 的覆盖 viewDidLoad() 方法中设置的,但由于某种原因,即使内容的值已更改,我获得的 View 高度值也不会反射(reflect)任何更改。我编写了一个函数,通过更改它的高度约束常量来更改内容 subview 的高度,我在 viewDidAppear() 方法中调用它。相关代码如下:

func setPageSize() {
    var pageHeight : CGFloat {
        var height : CGFloat = 1000 // The height of all content besides the UITextView
        let descriptionTextViewHeight = self.descriptionTextView.frame.height
        height += descriptionTextViewHeight
        return height // Always returns 60, which is the height of view when using the placeholder text from interface builder (doesn't update when text updated).
    }
    self.pageViewHeightConstraint.constant = pageHeight
}

override func viewDidLoad() {
    super.viewDidLoad()
    self.descriptionTextView.text = self.description
}
override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(true)
    self.setPageSize()
}

我应该在其他地方调用 setPageSize() 方法吗? UITextView 中是否有一种方法可以在输入新文本时返回更新后的值?我也尝试使用内容 View 中最后一个 View 的位置作为设置高度的引用,但我遇到了同样的问题 - 它返回的值就好像 UITextView 的高度始终为 60,但事实并非如此。

最佳答案

使用

let descriptionTextViewHeight = self.descriptionTextView.frame.height

返回textView的可见高度, 要获取 textView 内可滚动内容的高度,您可以使用

let descriptionTextViewHeight = self.descriptionTextView.contentSize.height

关于ios - Swift UIScrollView 高度取决于 UITextView 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49541512/

相关文章:

iOS Swift 3 Framework - 在 Storyboard 中无法访问

ios - 隐藏式字幕/字幕不适用于AVPlayer,但在Safari中适用:HLS

swift - 没有自动布局的 XCODE 8 中 UIScrollView 的奇怪行为

ios - Alamofire:使用 url、方法、参数、 header 和编码编写 POST 请求的语法

ios - 在单个 UIScrollview 中使用多个 UITableView,如何只加载可见单元格的单元格数据

ios - 拉取刷新插件: PullToBounce Wrapper UIScrollView

ios - 如何在 CoreData 中存储 ABRecordRef 对象

ios - iOS SDK 中是否有可供选择的默认背景图片?

ios - 核心数据自定义结构数组

ios - 如何实现可滚动/可缩放的自定义 UIView?