添加UIButton到UIScrollView问题



我试图添加一堆UIButton到一个水平的UIScrollView使用以下代码,但是我没有看到任何东西,我所看到的只是一个白色的UIScrollBar。为什么会这样?我很确定我搞砸了一些东西,就像以前一样,它工作得很好。

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被频繁地释放一次。它创建了自动释放,然后添加到scrollview,然后释放,这实际上意味着它会在自动释放池结束时被dealloc。我很惊讶这车居然没有坠毁。您是否使用自动引用计数?
  • 是自我。正确初始化滚动视图?如果是nil,它就会静默失败。
  • 是"bebas"字体真的加载和可用吗?自定义字体加载在iOS上并不是那么简单。

:

  • 你没有使用实际的按钮字体来测量标签大小。("bebas" vs "ArialMT")
  • 您可能在第1行有泄漏。NSArray最好是自动释放(使用[NSArray arrayWithObjects:...])。
  • autoresizingMask不是BOOL值,它是标志的OR组合。

最新更新