【问题标题】:Swift UIScrollView height dependent upon UITextView contentSwift UIScrollView 高度取决于 UITextView 内容
【发布时间】:2018-09-07 13:15:19
【问题描述】:

我有一个 UIScrollView,里面有多个视图,其中一个是 UITextView。我正在尝试设置滚动视图的高度以匹配内容。问题是 UITextView 的高度根据它包含的文本而变化。此内容是在视图控制器的覆盖 viewDidLoad() 方法中设置的,但由于某种原因,我得到的视图高度值没有反映任何变化,即使在内容的值发生变化之后也是如此。我编写了一个函数来通过更改它的高度约束常量来更改内容子视图的高度,我在 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 中是否有在输入新文本时返回更新值的方法?我还尝试使用内容视图中最后一个视图的位置作为设置高度的参考,但我遇到了同样的问题 - 它返回的值好像 UITextView 的高度始终为 60,但事实并非如此。

【问题讨论】:

    标签: ios swift uiscrollview uitextview


    【解决方案1】:

    使用

    let descriptionTextViewHeight = self.descriptionTextView.frame.height
    

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

    let descriptionTextViewHeight = self.descriptionTextView.contentSize.height
    

    【讨论】:

    • descriptionTextView 禁用滚动。它显示为一个可变大小的视图,该视图的大小适合其内容。它显示正确,但未从 self.descriptionTextView.height 或 self.descriptionTextView.contentSize.height 返回实际显示的大小。
    【解决方案2】:

    好的。我不确定为什么会这样,但如果我把这行设置文本的值:

    self.descriptionTextView.text = self.description
    

    在 viewDidLayoutSubviews() 而不是 viewDidLoad() 中它可以工作。我不确定为什么会这样,因为 viewDidLoad() 是在 viewDidLayoutSubviews() 之前调用的,并且两者都是在 viewDidAppear() 之前调用的;但由于某种原因,这会返回 UITextView 高度的正确值:

    self.descriptionTextView.frame.height
    

    在 viewDidAppear() 方法中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-16
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      • 2017-12-13
      • 2017-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多