以下のスクリーン ショットは iOS 7 のものです。label1
(黄色、上) は、テキストの原点がフレームの左上の下にあり、下が切り取られた状態で描画されます。iOS 5/6 では、テキストの原点はラベル フレームの左上です。label2
期待どおりにlabel3
レンダリングしてレイアウトします。
このビューを生成するコードは次のとおりです。
- (void)loadView
{
UIView *view = [[UIView alloc] initWithFrame:UIScreen.mainScreen.applicationFrame];
view.backgroundColor = UIColor.blueColor;
self.view = view;
UILabel *label1 = [UILabel new];
label1.backgroundColor = UIColor.yellowColor;
label1.font = [UIFont systemFontOfSize:16.0f];
label1.numberOfLines = 0;
label1.lineBreakMode = NSLineBreakByWordWrapping;
label1.frame = CGRectMake(50, 100, 200, 18);
label1.text = @"This text is too long to fit on one line.";
[self.view addSubview:label1];
UILabel *label2 = [UILabel new];
label2.backgroundColor = UIColor.greenColor;
label2.font = [UIFont systemFontOfSize:16.0f];
label2.numberOfLines = 0;
label2.lineBreakMode = NSLineBreakByWordWrapping;
label2.frame = CGRectMake(50, 150, 200, 36);
label2.text = @"This text is too long to fit on one line.";
[self.view addSubview:label2];
UILabel *label3 = [UILabel new];
label3.backgroundColor = UIColor.orangeColor;
label3.font = [UIFont systemFontOfSize:16.0f];
label3.numberOfLines = 0;
label3.lineBreakMode = NSLineBreakByWordWrapping;
label3.frame = CGRectMake(50, 200, 200, 18);
label3.text = @"This text is short.";
[self.view addSubview:label3];
}
質問label1
: iOS 7 でこれが異なるのはなぜですか。期待どおりにフレームの左上からテキストをレンダリングするには、どのラベル プロパティを変更する必要がありますか。