微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

调整 UITextView 大小时缩放字体大小

如何解决调整 UITextView 大小时缩放字体大小

我有一个 UITextView,它的属性文本可以有不同的字体、字体大小和颜色,如图(左)所示。

用户可以通过从调整大小手柄(垂直/水平或对角线)拖动来调整 textView 的大小。如果用户垂直或水平调整大小,我只需更改 textView 的宽度或高度。 textView 的字体大小不应发生任何变化。如果用户对角调整大小(保持纵横比),我想按比例缩放每个文本范围的字体大小(应该看起来像正确的图像)。

请注意,我通过更改宽度和高度约束(不使用缩放转换)来调整 textView 的大小。

enter image description here

这是我在调整 textView 大小时按比例缩放每个文本块的字体大小的方法

            let attributedText = self.textView.attributedText.mutablecopy() as! NSMutableAttributedString
            attributedText.beginEditing()
            
            // change the size of any font found in the attributed string
            attributedText.enumerateAttribute(.font,in: NSRange(location: 0,length: attributedText.string.utf16.count)) { (value,range,stop) in
                if let oldFont = value as? UIFont {
                    let newFont = oldFont.withSize(oldFont.pointSize * scaleX)
                    attributedText.addAttribute(.font,value: newFont,range: range)
                }
            }
            attributedText.endEditing()
            self.textView.attributedText = attributedText

如您所见,如果 textView 宽度加倍(即 scaleX = 2),那么字体的磅值也会加倍。但我不确定这是否正确,因为有时文本内容会大于 textView 大小。因此,一些文本被 textView 边界剪掉了。

有几个关于如何调整字体大小以填充 UITextView 的 stackoverflow 问题。但这并不完全是我想要的。

谁能帮我计算我应该用来缩放字体大小的正确比例因子。

谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。