【发布时间】:2012-08-09 20:49:36
【问题描述】:
这个问题已经被问过无数次了,但反复给出的两三个答案似乎都不起作用。
问题是:一个 `UITextView 包含一些任意文本。一些操作后,UITextView 需要调整水平和垂直大小以紧贴文本。
其他问题的答案给出的值似乎与文本的宽度/高度大致相同;但是,当 UITextView 调整为计算出的大小时,它并不完全正确,并且文本换行符与原来不同。
建议的方法包括使用– sizeWithFont:constrainedToSize: 和其他NSString 方法,UITextView 的sizeThatFits: 方法(这给出了更正确的高度,但视图的全宽),以及文本视图的contentSize 属性(也给出了错误的宽度)。
是否有准确的方法来确定UITextView 的文本宽度?或者文本视图中是否有一些隐藏的填充使文本适合的实际宽度更小?还是我完全想念的其他东西?
【问题讨论】:
-
出于好奇,如果您使用 sizeWithFont 方法,结果会有多远? UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(20, 20, 300, 200)]; textView.font = [UIFont systemFontOfSize:10.0f]; CGSize textViewSize = [textView.text sizeWithFont:[UIFont systemFontOfSize:10.0f] constrainedToSize:CGSizeMake(textView.frame.size.width - (textView.contentInset.left + textView.contentInset.left), MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];
-
很难准确地说,因为我没有正确的数字来比较它。内容插图全部为零。返回的大小 b sizeWithFont 太小,所以它增加了额外的中断。如果我增加设置文本视图的宽度 [textView.text sizeWithFont:font constrainedToSize:textView.frame.size]+fudge,16 似乎始终是给出正确大小的幻数。但是,如果文本在单词中间而不是空格处中断,那将不起作用。在这种情况下 sizeWithFont 是正确的。
-
也许 sizeWithFont 没有考虑空格字符,但会影响每行如何适合 uiTextView?
标签: objective-c ios text uitextfield