UITextContainerView 仅在以大于 45° 的角度旋转时才调整为他的 UITextView 超级视图的大小
Posted
技术标签:
【中文标题】UITextContainerView 仅在以大于 45° 的角度旋转时才调整为他的 UITextView 超级视图的大小【英文标题】:UITextContainerView not resizing as his UITextView superview, only when rotated with an angle grater than 45° 【发布时间】:2018-07-24 14:46:13 【问题描述】:我有一个 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 Hierarchy,我注意到 Text View 的 UITextContainerView 的宽度比它的 superview 小。
Debug View Hierarchy screen红色矩形是Text View,高亮的是它的UITextContainerView。
文本视图的大小调整正确,但 UITextContainerView 不正确。 我不明白为什么会这样,有人可以帮助我吗?
[有一个指向 YouTube 视频的链接,但它已被删除,因此该链接已被删除。]
【问题讨论】:
能录屏吗? @Farhad 我刚刚添加了一个屏幕记录示例 【参考方案1】:在 textView 上禁用滚动。 这会根据 contentSize 自动增加 textView 的高度。
textView.isScrollEnabled = false
【讨论】:
我已经完成了。 textView 通过代码添加到视图中,而不是使用 Storyboard,isScrollEnabled = false。我认为问题在于宽度而不是高度,我也尝试将 contentSize 设置为 textView 的大小,然后使用 layoutIfNeeded(),但没有结果。 是的,您必须指定正确的框架来放置您的 textView,即 Origin 和 Size。然后设置 isScrollEnabled = false 就可以了。您不需要做任何其他事情,例如:在 textViewDidChange 委托方法中调整高度。此外,您不必更改 textView 的宽度,您必须使用 textView.textContainer.contentHeight 调整高度 你能举个小例子吗?我只有旋转有这个问题。添加新行正确增加高度并使用捏合手势调整 textView 的大小(线性增加宽度和高度以适应新字体大小,而不是仅增加高度)【参考方案2】:在我的情况下,当我在另一个视图隐藏后更新 textview 的高度约束时会发生这种情况。我使用
self.viewSearchResults.isHidden = true
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0)
self.constraintTextViewsHeight.constant = 100
问题已解决。
【讨论】:
以上是关于UITextContainerView 仅在以大于 45° 的角度旋转时才调整为他的 UITextView 超级视图的大小的主要内容,如果未能解决你的问题,请参考以下文章
VM:_UITextContainerView (CALayer) - 内存峰值
仅在以非交互方式运行 bash 脚本时出现错误“cat: write error: Broken pipe”
Facebook iOS SDK:应用程序在以“未找到符号:_ACFacebookAppIdKey”开始后立即崩溃。仅在 iOS 5 中