在for循环中添加UILabel

时间:2014-12-21 20:18:33

标签: ios objective-c for-loop uilabel

所以我尝试在for循环中添加UILabel,并且没有出现任何标签。这是我的代码:

for (int i = 0; i < [currentList count]; i++) {
    label = [[UILabel alloc] initWithFrame:CGRectMake(i * 3, 5.0, 50.0, 50.0)];
    [label setText:[currentList objectAtIndex:i]];
    [label setBackgroundColor:[UIColor lightGrayColor]];
    [label setTextColor:[UIColor blackColor]];
    [self.view addSubview:label];
}

那没有做任何事情,所以我尝试在for循环中添加一个NSLog,虽然这只是一个测试,看看for循环是否搞砸了。

更新

另外,如何将每个标签彼此相加?当我运行这个应用程序时,它们都堆积在一起

1 个答案:

答案 0 :(得分:0)

我建议你阅读一些关于the view architecture and View Geometry and Coordinate Systems的内容。我不知道你究竟想要完成什么。

假设您希望它们居中并且看起来像列表,您可以尝试:

label = [[UILabel alloc] initWithFrame:CGRectMake((self.view.frame.size.width - labelWidth)/2, 64 + heightBetweenLabels*i, labelWidth, labelHeight)];

并设置 heightBetweenLabels (这将是此值+ 64,更准确地说,它是每个标签的y坐标之间的差异), labelWidth 和< strong> labelHeight 到您想要的值。

编辑:

让我再解释一下,看看:

enter image description here

左上角是原点(x = 0,y = 0)。 x的正值在屏幕上向右移动,而y的正值在屏幕上向下移动。同样,您为标签设置了x和y。这有助于确定标签相对于其超视图的位置。

如果您希望垂直距离更大,或者第一个标签从更远的位置开始,请将 64 替换为更高的值,因为它不受乘法影响。