【发布时间】:2013-01-10 18:59:57
【问题描述】:
我正在开发一个使用 UITextView 的应用程序。
UITextView 应该在垂直和水平方向上放大或缩小以适应其文本。为此,我在一个子类中覆盖了 sizeToFit,并像这样设置边界:
- (void)sizeToFit {
[self setBounds:(CGRect){.size = self.attributedText.size}];
}
问题在于这个大小并不能反映字符串的正确大小,因为 UITextView 会剪切文本。我将边缘插图设置为零,所以这应该不是问题吗?
在这一点上,我认为这是 NSAttributedString 的 size 属性的错误,但如果我使用 boundingRectWithSize:options:context:
[self setBounds:(CGRect){.size = [self.attributedText boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX) options:0 context:nil].size}];
因此,可能任何代码为 NSAttributedString 进行布局计算都不能很好地与 UITextView 的布局计算配合使用。
Here is example project which demonstrates the issue.
欢迎提出任何想法!
编辑:我还应该指出以下内容也不起作用:
- (void)sizeToFit {
[self setBounds:(CGRect){.size = [self sizeThatFits:self.attributedText.size]}];
}
【问题讨论】:
-
对于一个普通的文本字符串,我把它放在一个虚拟标签中,缩小标签以适应,然后获取它的尺寸。
标签: ios objective-c uikit uitextview nsattributedstring