1

如何在视图中垂直居中两个 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 行的另一部分)。

4

2 回答 2

1

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

于 2013-10-01T22:24:49.267 回答
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];
}
于 2013-10-01T22:21:08.063 回答