我正在尝试通过在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?我也想知道这个......
答案 0 :(得分:1)
我认为在运行for循环之前你没有初始化xOffset = 0。这样它取一个垃圾值然后执行xOffset + = 170;指令。
所以请初始化xOffset = 0;
答案 1 :(得分:0)
您的expectedLabelSize
计算似乎调整了height
,将width
保留为100.当您设置frame
的{{1}}时,您正在使用这个宽度。
答案 2 :(得分:0)
如果您使用框架定位标签,还应设置autoresizingMask
以确定您是基于纵向布局定位,还是正在横向测试应用,您的标签不会自动定位在新界之外。另外,请确保autorelease
这些标签,否则您将泄漏内存。