如何垂直居中两个动态高度的UILabel

时间:2013-10-01 22:15:16

标签: iphone ios objective-c ios7 core-text

如何在视图中垂直居中两个UILabel(动态高度),如Label1(2行,截断)和Label2(1行,截断):

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

我想单个UILabel和NSAttributedString(截断2行的一部分,1行的另一部分)是不可能的。

2 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分:0)

如果使用自动布局,可以将两个标签嵌入到父UIView中,然后使用约束将父UIView垂直居中于其超级视图中。