我有一个UITextView
,可以缩放和旋转它。其文本由用户编辑。文字属性也可以更改,例如文字和背景颜色,字体等。
现在好笑的是,如果我应用了一个缩小视图的缩放变换(例如0.5),则会剪切其文本。如果我设置view.transform
或view.layer.transform
,则行为是相同的。它是由内部UITextContainerView
引起的,该内部UITextContainerView
看起来像缩放了两倍,如果文本视图缩放为0.5倍,则frame
的大小为缩小后的文本视图的一半。 bounds
的{{1}}和UITextContainerView
具有相同的值,它是缩小的文本视图的大小,看起来是正确的。 UITextContainerView
变换及其层的变换是身份。
手动重置frame
中的bounds
和UITextContainerView
会自动重置,因此不起作用。此外,clipsToBounds
和masksToBounds
不能解决裁剪问题。
这发生在iOS 11.4的模拟器和真实设备中。如果仅删除新的键入属性的设置,则UITextContainerView
的行为将正确,并且文本不会被剪切。
这是大小写问题,如果我删除它,则该文本不再被剪切:
textView.typingAttributes = updatedTypingAttributes
有人碰到这个错误吗?我该怎么解决?
答案 0 :(得分:0)
最后,我通过将文本视图包装在另一个UIView
中并将此转换应用于UIView
而不是其中的textview来解决了该操作系统错误。
答案 1 :(得分:0)
通过在我的transform
子类上覆盖UITextView
解决了该问题。不需要父母UIView
。
override var transform: CGAffineTransform {
didSet {
guard transform != oldValue else { return }
// alternatively, if transform == .identity
if transform.a == 1 {
setNeedsLayout()
layoutIfNeeded()
}
}
}