系列文集:爆棧搶手 IOS 問題。目錄在此。倉薯翻譯,歡送指正:)
問題我有一個
UILabel
高度最多能顯示兩行,假如外面內容只要一行,它是垂直居中的。怎樣能讓它頂端對齊呢?
答復 答案1:用sizeToFit
改動UILabel
的高度nevan king,1969 贊
沒法直接改動
UILabel
的垂直對齊方式,但是把 label 的 frame 高度改小也能完成相反的效果。為了看得清楚,我把 label 標為橘黃色了。最復雜的做法是:
[myLabel sizeToFit];
sizeToFit假如內容長度超越一行,把
numberOfLines
設成 0(就是不限制行數)。myLabel.numberOfLines = 0; [myLabel sizeToFit];
有一個問題是,假如你文字是程度居中的,那麼執行完
sizeToFit
後 frame 寬度也減少了,文字會縮到左上角。處理辦法是把 label 的寬度先存起來,執行完sizeToFit
之後再設回來。另外要留意,
sizeToFit
會把 label 的以後寬度當做最大寬度,執行之後寬度只會比變窄,不會變寬。關於用 Auto Layout 的 NIB 和 Storyboard,Mark Amery在評論中補充理解決方案:
假如 nib 或 storyboard 裡用了 autoLayout,那麼在
答案2:末尾補充換行viewDidLoad
調sizeToFit
是不論用的,由於實踐順序是先執行viewDidLoad
再執行 autoLayout,執行 autoLayout 的時分會把 sizeToFit 的後果掩蓋掉。
不過,在viewDidLayoutSubviews
裡調sizeToFit
是管用的。Purple Ninja Girl,44 贊
一個更復雜的方法(也是比擬髒的方法)是把
UILabel
的 line break mode 設為Clip
,然後直接在末尾加一些換行。myLabel.lineBreakMode = UILineBreakModeClip;myLabel.text = [displayString stringByAppendingString:"\n\n\n\n"];
這個辦法不是萬能的——尤其是假如文字超出范圍,需求在末尾顯示『…』就不行了。
答案3:用UITextField
替代UILabel
jowie,47 贊
用
答案4:重寫UITextField
取代UILabel
,默許就是頂端對齊的。可以把userInterationEnabled
設為NO
,讓它不能滾動。UILabel
的draWinRect
辦法Martin Wickman,21 贊
創立一個
UILabel
的子類,用起來十分方便:// TopLeftLabel.h #import <Foundation/Foundation.h> @interface TopLeftLabel : UILabel { } @end
// TopLeftLabel.m #import "TopLeftLabel.h" @implementation TopLeftLabel - (id)initWithFrame:(CGRect)frame { return [super initWithFrame:frame]; } - (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines { CGRect textRect = [super textRectForBounds:bounds limitedToNumberOfLines:numberOfLines]; textRect.origin.y = bounds.origin.y; return textRect; } -(void)drawTextInRect:(CGRect)requestedRect { CGRect actualRect = [self textRectForBounds:requestedRect limitedToNumberOfLines:self.numberOfLines]; [super drawTextInRect:actualRect]; } @end
詳細闡明見這裡。
原文地址:Vertically align text within a UILabel
本文地址:http://www.jianshu.com/p/429470186933
系列文集:爆棧搶手 iOS 問題
譯者:@戴倉薯
【[爆棧搶手 iOS 問題] 讓 UILabel 頂端對齊】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!