4

我正在我的设备上调试一个奇怪的文本换行问题,我已经追踪到UITextView从 XCode 4 开始对 contentInset 值进行了某种修改。

这是我用来展示此错误的示例代码:

NSString *message = @"How are you doing?";
CGSize messageDimensions = [message sizeWithFont:[UIFont systemFontOfSize:15.0]
                               constrainedToSize:CGSizeMake(self.view.frame.size.width,9999)
                                   lineBreakMode:UILineBreakModeWordWrap];
CGFloat xOffset = 20;
CGFloat yOffset = 20;

CGRect textViewFrame = CGRectMake(xOffset, yOffset, messageDimensions.width+16, messageDimensions.height+16);

self.textView = [[[UITextView alloc] initWithFrame:textViewFrame] autorelease];
self.textView.font = [UIFont systemFontOfSize:15.0];
self.textView.text = message;
self.textView.editable = NO;

[self.view addSubview:self.textView];

附件是在 iOS 5 模拟器和我的 iPhone 4 上运行代码的两个屏幕截图。

这是运行 iOS5 的 iPhone 4:

设备

下面是运行iOS5.0的模拟器:

模拟器

如您所见,它包裹在一个中,而不是另一个。为了防止包装在我的 iOS4 设备上,我必须更改这一行:

CGRect textViewFrame = CGRectMake(xOffset, yOffset, messageDimensions.width+16, messageDimensions.height+16);

填充 +17 而不是 +16。

谁能告诉我这是否是一个已知的错误,以及UITextView填充量是否是 UIKit 中某个我可以参考而不是硬编码的常量值?

谢谢!

4

0 回答 0