UIScrollView问题添加UIButton问题
问题描述:
我想添加一串UIButton到水平UIScrollView使用下面的代码,但是我没有看到任何东西,我看到的只是一个白色的UIScrollBar。为什么是这样?我很确定我搞砸了一些像以前那样工作得很好的东西。UIScrollView问题添加UIButton问题
self.category = [[NSArray alloc]initWithObjects:@"ALL", @"FOOD",@"NIGHT LIFE",@"ARTS & ENTERTAINMENT",@"SPORT", @"SHOP", @"COLLEGE & UNIVERSITY", @"TRAVEL SPOT", nil];
self.scrollView.delegate = self;
self.scrollView.scrollEnabled = YES;
self.scrollView.autoresizingMask = YES;
int xOffset = 0;
for(int index=0; index < [self.category count]; index++)
{
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button.titleLabel setTextAlignment:UITextAlignmentCenter];
[button setBackgroundImage:[UIImage imageNamed:@"CategoryTab.png"] forState:UIControlStateNormal];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[button setTag:index];
[button addTarget:self action:@selector(pressed:) forControlEvents:UIControlEventTouchUpInside];
[button setTitle:[self.category objectAtIndex:index] forState:UIControlStateNormal];
[button setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
[button.titleLabel setFont:[UIFont fontWithName:@"bebas" size:15.0]];
CGSize maximumLabelSize = CGSizeMake(300,9999);
CGSize expectedLabelSize = [[self.category objectAtIndex:index] sizeWithFont:[UIFont fontWithName:@"ArialMT" size:15.0]
constrainedToSize:maximumLabelSize
lineBreakMode:UILineBreakModeWordWrap];
[button setFrame: CGRectMake(xOffset, 0, expectedLabelSize.width + 30, 38)];
[self.scrollView addSubview:button];
xOffset += expectedLabelSize.width + 30;
[button release];
}
self.scrollView.contentSize = CGSizeMake(xOffset, 38);
答
几个可能的原因:
- 的UIButton的释放一次过于频繁。它被创建自动释放,然后添加到滚动视图,然后释放,这意味着当autorelease池结束时它将被释放。实际上,我很惊讶这不会崩溃。您是否使用自动引用计数?
- 是self.scrollview正确初始化?如果它是零,它只会失败而已。
- 是真正加载和可用的“bebas”字体吗?自定义字体加载在iOS上并不是那么简单。
另外:
- 您没有使用实际的按键的字体来衡量的标签尺寸。 (“bebas”vs“ArialMT”)
- 你可能在第1行有泄漏。那NSArray最好是自动释放(使用
[NSArray arrayWithObjects:...]
)。 -
autoresizingMask
不是BOOL值,它是标志的或组合。
是的问题是在这里发布..我没有注意到它是autoreleased ..谢谢 – adit