xcode中預設的uilabel是垂直居中對齊的,如果你的uilabel高度有多行,當內容少的時候,會自動垂直居中。
如下圖所示(來自stackoverflow):
比較鬱悶的是,uilabel並不提供設定其垂直對齊方式的選項。所以如果你想讓你的文字頂部對齊,那麼就需要自己想辦法了。 stackoverflow.com 上提供了幾種方法來達到頂部對齊的效果。
方法一在顯示文字時,首先計算顯示當前的文字需要多寬和多高,然後將對應的uilabel的大小改變成對應的寬度和高度。此方法的相示意圖如下:
在顯示文字時,首先計算顯示當前的文字需要多寬和多高,然後將對應的uilabel的大小改變成對應的寬度和高度。此方法的相示意圖如下:
1234567
8
cgsize
maximumsize
=cgsizemake
(300
,9999
);nsstring
*datestring
=@"the date today is january 1st, 1999"
;uifont
*datefont=[
uifont
fontwithname:
@"helvetica"
size:
14];
cgsize
datestringsize=[
datestring
sizewithfont:
datefont
constrainedtosize:
maximumsize
linebreakmode:
self
.datelabel
.linebreakmode
];cgrect
dateframe
=cgrectmake(10
,10,300
,datestringsize
.height
);self
.datelabel
.frame
=dateframe
;
方法二
此方法更加簡單粗暴,但是很有效。其方法是在文字後面加多一些\n。 需要注意的是,\n後還得加至少乙個空格,否則多餘的\n會被uilabel忽略。從這一點上看,uilabel似乎又過於「聰明」了。
該方法的示意圖如下:
該方法的**如下:
12
for
(inti=
0;i<
newlinestopad;i
++)self
.text=[
self
.text
@"\n"];
方法三
最正統的方法,利用objective-c的category特性,修改uilabel的繪製**。示例**如下:
1234567
891011
1213
1415
1617
1819
2021
2223
2425
2627
2829
// -- file: uilabel+verticalalign.h
#pragma mark verticalalign
@inte***ce
uilabel
(verticalalign)-(
void
)aligntop;-
(void
)alignbottom
;@end
// -- file: uilabel+verticalalign.m
@implementation
uilabel
(verticalalign)-(
void
)aligntop-(
void
)alignbottom
@end
我選了簡單暴力的方法二,你呢?
參考資料
如何讓UILabel字型上下對齊?
uilabel可以設定左對齊 右對齊和居中,那如何實現上下對齊呢?有幾種方案 1.簡單粗暴,在文字後面加多一些 n。但是 n後還得加至少乙個空格,否則多餘的 n會被uilabel忽略。2.自定義uilabel,重寫 void drawtextinrect cgrect rect 下面是 void d...
UIlabel 中的字型對齊
我們平時對於uilabel對齊只要設定想應的 firstlabel.frame.miny secondlabel.frame.miny 就能實現label的對齊,但是有的時候字型的大小不一樣就可能會造成 label.frame.miny,一樣,而字型由於font大小不一樣,而font 一般是居中 上...
關於設定UILabel的文字縮排
所以了解了一下關於uilabel設定文字縮排的東西。設定uilabel中文字的縮排 被 微博的內容 text retweetstatus.text text nsstring stringwithformat user.name,retweetstatus.text self.retweetcont...