добавление UIButton к проблеме UIScrollView - PullRequest
0 голосов
/ 17 сентября 2011

Я пытаюсь добавить группу 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);

1 Ответ

0 голосов
/ 18 сентября 2011

Несколько возможных причин:

  • Кнопка UIB выпускается слишком часто. Он создается автоматически, затем добавляется в представление прокрутки, затем освобождается, что фактически означает, что он будет освобожден после завершения пула автоматического выпуска. Я удивлен, что это не сбоит, на самом деле. Вы используете автоматический подсчет ссылок?
  • Правильно ли инициализирован self.scrollview? Если это ноль, он просто молча потерпит неудачу.
  • действительно ли шрифт "bebas" загружен и доступен? Пользовательская загрузка шрифтов не так тривиальна для iOS.

Также:

  • Вы не используете фактический шрифт кнопки для измерения размера этикетки. ("bebas" против "ArialMT")
  • вы, вероятно, имеете утечку в строке 1. Этот NSArray лучше бы автоматически выпустить (используя [NSArray arrayWithObjects:...]).
  • autoresizingMask не является значением BOOL, это комбинация флагов ИЛИ.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...