2013-10-01 59 views
0

如何中心垂直2的UILabel(動態高度)的圖內,像這樣與Label1的(2行,截短的)和label2(1線,截短):如何垂直居中2的UILabel與動態高度

+------------------------------------------+ 
|           | 
|           | 
|Label1 Label1 Label1 Label1 Label1 Label1 | 
|Label1 Label1 Label1 Label1 Label1 ... | 
|Label2 Label2 Label2 Label2 Label2 ... | 
|           | 
|           | 
+------------------------------------------| 

我想這是不可能與一個單一的UILabel和一個NSAttributedString(截斷2行的一部分,另一部分在1行)。

回答

0

如果您正在使用自動佈局,可以在父母的UIView嵌入兩個標籤,然後用約束垂直居中於它的父父UIView的。

+0

兩個UILabel都是多行的,高度不是靜態的,所以我認爲你的解決方案不適用。 – keo

+1

@keo,AutoLayout專爲這種確切的情況而設計。當視圖設置爲使用其內容內容大小時,它們將隨內容更改而調整,並導致佈局重新計算。 –

+0

@BrianNickel你是對的。 AutoLayout是最好的解決方案。 – keo

0

您可以在視圖中看到標籤框出現並再次將其替換在屏幕上。我之前嘗試過,它工作。你可能還需要調用setNeedsDisplay。

- (void)viewDidAppear:(BOOL)animated { 

    float heights = lbl1.frame.size.height + lbl2.frame.size.height; 
    lbl1.frame = CGRectMake(lbl1.frame.origin.x, screenheight/2 - heights/2, lbl1.frame.size.width, lbl1.frame.size.height); 
    lbl2.frame = CGRectMake(lbl2.frame.origin.x, screenheight/2 - heights/2 + lbl1.frame.size.height, lbl2.frame.size.width, lbl2.frame.size.height); 
    [lbl1 setNeedsDisplay]; 
    [lbl2 setNeedsDisplay]; 
}