1. UILabel的字要置中且置頂
2. 能支援多字,自動調整UILabel的高度
只是這樣2個,困擾很久,最後還是找到方式,寫了出來。
UILabel是沒有置又置頂的,但有類似效果的方法如下:
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 50, 10)];
label.textAlignment = UITextAlignmentCenter; //置中
[label setFont:[UIFont boldSystemFontOfSize:14]]; //設定字型
label.numberOfLines = 0; //為了讓字能置頂的特別做法
label.text = @"1111111111111"; //隨便一堆字
CGRect frame = label.frame;
CGFloat width = frame.size.width;
//底下調整高度
CGSize maximumSize = CGSizeMake(width, 9999);
CGSize labelSize = [label.text sizeWithFont: [UIFont boldSystemFontOfSize:14]
constrainedToSize:maximumSize
lineBreakMode:label.lineBreakMode ];
CGRect newframe = CGRectMake(frame.origin.x, frame.origin.y, frame.size.width, labelSize.height);
label.frame = newframe;
這樣就可以做到想要的效果了。
參考網址
Vertically align text within a UILabel
Vertical Text Alignment for UILabel?
沒有留言:
張貼留言