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值,它是标志的或组合。
+0

是的问题是在这里发布..我没有注意到它是autoreleased ..谢谢 – adit