如何将UILabel置于UIView上

时间:2011-07-19 20:36:43

标签: ios uiview uilabel

如何将UILabel置于UIView上?我使用以下代码

float width = weatherView.bounds.size.width; 
float height = weatherView.bounds.size.height; 

[self.label setFrame:CGRectMake(width-100,height-100, 100, 100)];

7 个答案:

答案 0 :(得分:102)

怎么样:

[self.label setCenter:view.center];

答案 1 :(得分:35)

如果标签是视图的子视图:

[self.label setCenter:CGPointMake(view.frame.size.width / 2, view.frame.size.height / 2)]

除非标签和视图具有相同的超级视图,否则请勿使用view.center

如果没有立即连接,那么您必须将视图的中心转换为标签父级的坐标空间。那么你可以使用PengOne的答案来转换点。

答案 2 :(得分:20)

如果您拥有的是已设置的标签并且您想要将其内容居中,则使用NSTextAlignmentCenter。

cell.menuLabel.textAlignment = NSTextAlignmentCenter;

答案 3 :(得分:16)

更好的解决方案是:

首先:如果您以编程方式执行此操作,则需要使用框架和一些自定义项进行初始化:

// Simple example
int yPosition = 10;
UILabel *label = [[UILabel alloc] initWithFrame: CGRectMake(0, yPosition, self.view.frame.size.width, 0)];
[label setText: @"Testing..."];
[label setBackgroundColor: [UIColor clearColor]];
[label setNumberOfLines: 0];
[label sizeToFit];

第二个:如果标签中的内容您可以在调用setNumberOflines选择器并0 value分配后运行此标签,则您的文字将包含所有行,和sizeToFit方法调用了一个很好的自定义,最后:

[self.label setCenter: CGPointMake(self.view.center.x, self.label.center.y)];

这将以only the X axis为中心,Y axis将在帧初始化中保留。

PS:如果不是UILabel它也有效但是依赖于你正在使用的控件需要另一个简单的自定义,或者两者都没有,如果你只想以编程方式居中但是{{ 1}}设计,只需要运行interface builder

答案 4 :(得分:2)

这样的事应该可以解决问题...... 确保标签设置为居中对齐,并且足够大/宽以处理文本字符串。

float viewWidth = weatherView.frame.size.width;
float viewHeight = weatherView.frame.size.height;
float labelWidth = label.frame.size.width;
float labelHeight = label.frame.size.height;

float xpos = (viewWidth/2.0f) - (labelWidth/2.0f);
float ypos = (viewHeight/2.0f) - (labelHeight/2.0f);

[label setFrame:CGRectMake(xpos,ypos,labelWidth,labelHeight)];

我认为应该按照你的要求去做。

答案 5 :(得分:2)

如果通过.xib添加UILabel或以编程方式添加,则有两种可能性。

如果是第一种情况,即通过.xib添加,那么您可以使用'Arrange'属性从xib文件大小检查器选项卡设置位置

如果第二种情况持续存在,那么你可以设置为--- [self.label setCenter:view.center];

答案 6 :(得分:2)

PengOne / Alex Lockwood的回答简单实用。如果您打算支持旋转,请添加以下内容以使其保持居中:

[self.myLabel setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleWidth];