【问题标题】:iOS Swift : Keep UILabel constantly centered in UIView that changes heightiOS Swift:保持 UILabel 始终居中在改变高度的 UIView 中
【发布时间】:2026-01-28 21:55:02
【问题描述】:

我有一个位于 UIView 中的 UILabel,它根据设备屏幕尺寸进行扩展/收缩。我已经应用了约束,因此无论 UIView 大小如何,UILabel 都保持居中,效果很好。

现在我发现自己像这样手动调整 UIView 的大小(mainView 是视图控制器):

self.myView.frame = CGRectMake(0,0,self.mainView.frame.width, self.mainView.frame.height)

所以这会拉伸 UIView 以填充整个屏幕/视图控制器(它也是动画的)。我假设 UILabel 会继续自动居中,但它似乎将自己固定,好像它被限制在 UIView 的顶部,在它下面留下了很多空的 myView 空间。

如何告诉 UILabel 保持在它所在的高度变化 UIView 的中心?

【问题讨论】:

  • 我们需要了解您的限制
  • 约束只是“对齐中心 x”和“对齐中心 y”。

标签: swift uiview height center


【解决方案1】:

我们需要了解您的限制以提供帮助,但是:

  1. 您需要使用居中约束。
  2. 设置边界,而不是 myView 的框架。
  3. 您可能需要在您所在的 ViewController 的视图上调用 setNeedsLayout

另外,设置 UILabel 的背景颜色——它可以居中,但文本不在其中居中。为此,请设置对齐属性。

【讨论】:

  • 感谢您的信息。 1.绝对使用输入约束。 2. 使用 bounds 使得它更加不可预测 - UILabel 完全跳出 myView。 3.我认为这可能是解决方案。以前没用过,所以报错“Use of unresolved identifier 'setNeedsLayout'。不知道怎么解决。4.我设置了这个颜色,它看起来正常且居中。
  • updated... setNeedsLayout 是 UIView 的消息。在视图控制器的根视图上调用它。