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 でコードを実行している 2 つのスクリーンショットが添付されています。
iOS5 を実行している iPhone 4 は次のとおりです。
iOS5.0 を実行しているシミュレーターは次のとおりです。
ご覧のとおり、一方ではラップされていますが、他方ではラップされていません。iOS4 デバイスでのラッピングを防ぐために、次の行を変更する必要があります。
CGRect textViewFrame = CGRectMake(xOffset, yOffset, messageDimensions.width+16, messageDimensions.height+16);
+16 ではなく +17 のパディングを設定します。
UITextView
これが既知のバグであるかどうか、およびパディング量がハードコーディングする代わりに参照できるUIKitのどこかにある定数値であるかどうか、誰か教えてもらえますか?
ありがとう!