仅当旋转角度大于45°时,UITextContainerView的大小才可以调整为UITextView的超级视图

时间:2018-07-24 14:46:14

标签: ios swift uitextview

我有一个UITextView,可以同时使用捏和旋转手势调整大小。 为了调整它的大小,我在捏手势处理程序函数中调用了函数textViewDidChange(),而发送者状态为.changed类型,并且在增加了文本视图的字体大小之后。

功能如下:

func textViewDidChange(_ textView: UITextView) {

    textView.sizeThatFits(CGSize(width: CGFloat.greatestFiniteMagnitude, height: CGFloat.greatestFiniteMagnitude))
    let newSize = textView.sizeThatFits(CGSize(width: CGFloat.greatestFiniteMagnitude, height: CGFloat.greatestFiniteMagnitude))
    var newFrame = textView.bounds

    newFrame.size = CGSize(width: newSize.width, height: newSize.height)

    textView.bounds = newFrame

}

问题是,当我以大于45度的角度旋转文本视图时,文本视图的文本被裁剪。通过使用Debug View层次结构,我注意到Text View的UITextContainerView的宽度小于其Superview的宽度。

Debug View Hierarchy screen红色矩形是“文本视图”,突出显示的一个是其UITextContainerView。

文本视图的大小正确,但UITextContainerView的大小不正确。 我不明白为什么会这样,有人可以帮助我吗?

[有一个指向YouTube视频的链接,但该链接已被删除,因此该链接已删除。]

2 个答案:

答案 0 :(得分:1)

在textView上禁用滚动。 这会根据contentSize自动增加textView的高度。

textView.isScrollEnabled = false

答案 1 :(得分:0)

在我的情况下,当我在另一个视图隐藏后更新textview的高度约束时,会发生这种情况。我用

    self.viewSearchResults.isHidden = true
    DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
        self.constraintTextViewsHeight.constant = 100
    }

问题已解决。