如何将UILabel置于UIView上

joh*_*doe 38 uiview uilabel ios

我怎样才能将UILabel置于UIView的中心?我使用以下代码

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

[self.label setFrame:CGRectMake(width-100,height-100, 100, 100)];
Run Code Online (Sandbox Code Playgroud)

Pen*_*One 102

怎么样:

[self.label setCenter:view.center];
Run Code Online (Sandbox Code Playgroud)

  • 嗯...仅当标签和视图是同一视图的子视图时.如果标签是视图的子视图,则必须忽略该位置并仅考虑边界. (10认同)

Nas*_*nas 35

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

[self.label setCenter:CGPointMake(view.frame.size.width / 2, view.frame.size.height / 2)]
Run Code Online (Sandbox Code Playgroud)

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

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


Ale*_*ado 20

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

cell.menuLabel.textAlignment = NSTextAlignmentCenter;
Run Code Online (Sandbox Code Playgroud)


rok*_*oki 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];
Run Code Online (Sandbox Code Playgroud)

第二:如果你试图将标签放在中间位置,你可以在setNumberOflines选择器调用和0 value分配之后运行它,你的文本将需要所有的行,并且sizeToFit方法被调用以获得良好的自定义,最后:

[self.label setCenter: CGPointMake(self.view.center.x, self.label.center.y)];
Run Code Online (Sandbox Code Playgroud)

这将居中only the X axis,并且Y axis将在框架初始化中保留所需的内容.

PS:它也有效,如果不是,UILabel但取决于你使用的控件将需要另一个简单的自定义或两者都没有,如果你只想以编程方式设计但interface builder设计,只需要运行second code.