在UIView中居中标签

时间:2009-04-09 23:58:06

标签: ios objective-c iphone cocoa-touch uilabel

将标签置于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)];

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

2 个答案:

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

(注意,你不需要强制这些坐标浮动 - 在这种情况下,将它们写为int更似可读)。

此外,这是一个风格问题 - 但由于你已经在使用属性语法(aView.backgroundColor),你也可以将它用于中心属性: - )

答案 1 :(得分:6)

要将任何子项水平居中放置在父级中,您可以像这样计算其位置;

childX = (parentWidth - childWidth) / 2

(这也适用于身高)。