網頁

2012年8月25日 星期六

iOS開發筆記-如何讓UILabel的字能置中且在頂端

這陣子有個需求
1. UILabel的字要置中且置頂
2. 能支援多字,自動調整UILabel的高度

只是這樣2個,困擾很久,最後還是找到方式,寫了出來。

UILabel是沒有置又置頂的,但有類似效果的方法如下:


UILabel *label = [[UILabel allocinitWithFrame: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?

沒有留言:

張貼留言