2011-08-25 89 views
0

我想创建具有一个UILabel作为元素水平滚动视图,通过做在viewDidLoad中的以下内容:不能添加子视图的UIScrollView

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被点击?我想知道这是好..

+0

是的..我刚刚发布标签后,将其添加到subview.so我需要autoresizingMask的scrollView? – adit

+0

你的autoresizingMask实际上工作 – adit

+0

移动我的评论给一个答案,所以你可以接受它:) – darvids0n

回答

0

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

+0

为什么不工作,如果我将其更改为UIButton – adit

+0

“UIButton”对“UILabel”可能具有不同的默认设置。确保已将'hidden'设置为'NO',正确设置'frame',正确设置'autoresizingMask',并且如果您使用的是自定义按钮,则默认情况下它没有图像,因此它看起来不可见。如果你想要一个默认的按钮外观,你需要调用'[UIButton buttonWithType:UIButtonTypeRoundedRect];' – darvids0n

0

expectedLabelSize计算似乎调整height,留下width在100。当您设置UILabel你只是用这个宽度的frame

1

我想你在运行for循环之前没有初始化xOffset = 0。所以它正在取一个垃圾值,然后执行xOffset + = 170;指令。

所以请初始化xOffset = 0;

+0

我其实,只是没有shpw在这里 – adit

+0

超,,,,,其工作很好 – Srinivas

相关问题