UILabel頂端對齊

2021-08-27 09:47:42 字數 1698 閱讀 1558

code中預設的uilabel是垂直居中對齊的,如果你的uilabel高度有多行,當內容少的時候,會自動垂直居中。

比較鬱悶的是,uilabel並不提供設定其垂直對齊方式的選項。所以如果你想讓你的文字頂部對齊,那麼就需要自己想辦法了。

stackoverflow.com 上提供了幾種方法來達到頂部對齊的效果。

方法一:

在顯示文字時,首先計算顯示當前的文字需要多寬和多高,然後將對應的uilabel的大小改變成對應的寬度和高度。

該方法的**如下:

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似乎又過於「聰明」了。

該方法的**如下:

for(inti=

0;i<

newlinestopad;i

++)self

.text =[

self.:@

"\n "

];

方法三:
最正統的方法,利用objective-c的category特性,修改uilabel的繪製**。示例**如下:

// -- 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對齊只要設定想應的 firstlabel.frame.miny secondlabel.frame.miny 就能實現label的對齊,但是有的時候字型的大小不一樣就可能會造成 label.frame.miny,一樣,而字型由於font大小不一樣,而font 一般是居中 上...

UILabel 上下左右對齊

在ios中預設的uilabel中的文字在豎直方向上只能居中對齊,博主參考國外 從uilabel繼承了乙個新類,實現了居上對齊,居中對齊,居下對齊。具體如下 cpp view plain copy myuilabel.h created by yexiaozi 007 on 3 4 13.import...

讓UILabel的文字頂部對齊

xcode中預設的uilabel是垂直居中對齊的,如果你的uilabel高度有多行,當內容少的時候,會自動垂直居中。如下圖所示 來自stackoverflow 比較鬱悶的是,uilabel並不提供設定其垂直對齊方式的選項。所以如果你想讓你的文字頂部對齊,那麼就需要自己想辦法了。stackoverfl...