8

将标签居中的最佳方法是UIView什么?如果你做一些事情,比如

UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(view.frame.origin.x / 2, view.frame.origin.y / 2, 50.0, 50.0)];

然后将标签的原点设置为视图的中心。最好的办法是使用 center 属性将视图的中心设置为该点。所以我尝试使用以下代码:

UIView *aView = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];
aView.backgroundColor = [UIColor darkGrayColor];
CGRect frame = aView.frame;

UILabel *aLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 125.0f, 30.0f)];
[aLabel setCenter:CGPointMake(frame.origin.x / 2, frame.origin.y / 2)];

这会产生一个标签,该标签几乎超出了左上角视图的范围。

4

2 回答 2

18

您做错的主要事情是取一半的原始值,而不是一半的大小

但是,在这种情况下,您甚至不需要计算 - 只需执行以下操作:


UIView *aView = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];
aView.backgroundColor = [UIColor darkGrayColor];

UILabel *aLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 125, 30)];
aLabel.center = aView.center;

(请注意,您不需要将这些坐标强制为浮点数 - 在这种情况下,将它们写为整数似乎更具可读性)。

此外,这是风格问题 - 但由于您已经在使用属性语法 ( aView.backgroundColor),您也可以将其用于 center 属性:-)

于 2009-04-10T00:31:39.197 回答
6

要在父母中水平居中放置任何孩子,您可以像这样计算它的位置;

childX = (parentWidth - childWidth) / 2

(这也适用于身高)。

于 2009-04-10T00:03:36.223 回答