无法将子视图添加到UIScrollView

时间:2011-08-25 04:13:32

标签: iphone objective-c ipad

我正在尝试通过在viewDidLoad中执行以下操作来创建一个以UILabel为元素的水平滚动视图:

for(int index=0; index < [self.category count]; index++)
    {
        UILabel *label = [[UILabel alloc] init];
        label.text = [self.category objectAtIndex:index];
        label.textColor = [UIColor blackColor];
        CGSize maximumLabelSize = CGSizeMake(100,9999);
        CGSize expectedLabelSize = [[self.category objectAtIndex:index] sizeWithFont:label.font                        
                                      constrainedToSize:maximumLabelSize 
                                          lineBreakMode:UILineBreakModeWordWrap]; 
        label.frame = CGRectMake(5+xOffset, 0, expectedLabelSize.width, 40);

        self.scrollView.contentSize = CGSizeMake(scrollWidth+xOffset,110);
        [self.scrollView addSubview:label];

        xOffset += 170;
    }

但是,当我在模拟器中运行应用程序时,我看不到任何内容,我在这里缺少什么?很确定UIScrollView是通过IBOutlet连接的,我知道文本存在,因为我尝试通过NSLog打印出来

更新: 另外我如何检查单击了哪个UILabel?我也想知道这个......

3 个答案:

答案 0 :(得分:1)

我认为在运行for循环之前你没有初始化xOffset = 0。这样它取一个垃圾值然后执行xOffset + = 170;指令。

所以请初始化xOffset = 0;

答案 1 :(得分:0)

您的expectedLabelSize计算似乎调整了height,将width保留为100.当您设置frame的{​​{1}}时,您正在使用这个宽度。

答案 2 :(得分:0)

如果您使用框架定位标签,还应设置autoresizingMask以确定您是基于纵向布局定位,还是正在横向测试应用,您的标签不会自动定位在新界之外。另外,请确保autorelease这些标签,否则您将泄漏内存。