一 固定寬度
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 21)]; if (label) { // 設定常值內容 label.text = @"我真的很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長"; // 0代表不限制行數 [label setNumberOfLines:0]; // 因為行數不限制,所以這裡在寬度不變的基礎上(實際寬度會略為縮小),高度會自動擴充 [label sizeToFit]; [self.view addSubview:label]; [label release]; }
因為label設定為行數無限制,所以label自適應會增加label的高度,實際的label.frame為(0, 0, 306, 105)
二 固定高度
UILabel *label2 = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 21)]; if (label2) { // 設定常值內容 label2.text = @"我真的很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長"; // 0代表不限制行數 [label2 setNumberOfLines:1]; // 因為這裡行數進行了限制,所以這裡在高度不變的基礎上,寬度增加了 [label2 sizeToFit]; [self.view addSubview:label2]; [label2 release]; }
因為label對行數進行了限制,固定為1行,所以自適應會增加label的寬度,實際的label.frame為(0, 0, 1275, 21)。
以此類推,如果將行數設定為2,那麼label.frame將會變為(0, 0, 306, 42);隨著行數增加,label.frame會越來越逼近(0, 0, 306, 105),最後等於這個值(當行數大於等於5);