2014-09-15 6 views
0

В viewDidLoad я добавляю кнопки на представление прокрутки в цикле следующим образом:Как горизонтально центрировать содержимое прокрутки?

for (int i = 0; i < self.topics.count; i++) { 
    id obj = self.topics[i]; 
    if ([obj isKindOfClass:[TRBTaxonomy class]]) { 
     TRBTaxonomy *topic = obj; 

     UIButton *prevTopicButton = nil; 
     if (i > 0) { 
      prevTopicButton = buttons[i-1]; 
     } 

     //Create topic divider 
     UILabel *topicsDividerLabel =[[UILabel alloc] init]; 
     [topicsDividerLabel setBackgroundColor:[UIColor lightGrayColor]]; 
     [topicsDividerLabel setTranslatesAutoresizingMaskIntoConstraints:NO]; 

     UIButton *topicButton = [UIButton buttonWithType:UIButtonTypeSystem]; 
     topicButton.translatesAutoresizingMaskIntoConstraints = NO; 
     [topicButton setTitle:topic.name forState:UIControlStateNormal]; 
     [topicButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
     topicButton.titleLabel.font = [UIFont fontWithName:(NSString*)[[TRBUtils fonts] valueForKey:@"TopicsBarFontName"] size:15]; 
     topicButton.titleLabel.textAlignment = NSTextAlignmentLeft; 
     [topicButton addTarget:self action:@selector(topicTapped:) forControlEvents:UIControlEventTouchUpInside]; 

     [self.scrollView addSubview:topicButton]; 
    } 
} 

Затем, в конце цикла я стараюсь, чтобы получить ширину содержимого вида прокрутки, чтобы поместить его в центр горизонтальной в представлении прокрутки:

CGFloat newContentOffsetX = (self.scrollView.contentSize.width/2) - (self.scrollView.bounds.size.width/2); 
self.scrollView.contentOffset = CGPointMake(newContentOffsetX, 0); 

, но в данный момент self.scrollView.contentSize.width возвращает 0

Когда я получаю содержание от viewDidAppear го ere - это контент, и все работает нормально, но есть видимое мигание от перемещения содержимого прокрутки слева от центра.

Как избавиться от этого моргания? Почему self.scrollView.contentSize.width равен нулю в viewDidLoad и viewWillAppear, но не в viewDidAppear?

ответ

0

Почему self.scrollView.contentSize.width равен нулю в viewDidLoad и viewWillAppear, но не в viewDidAppear?

Когда метод viewDidLoad и viewWillAppear называют видом, просто не появился. Таким образом, contentSize не должно быть странным.

Как избавиться от этого мигания?

пытаются использовать этот метод

- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated 

CGFloat newContentOffsetX = (self.scrollView.contentSize.width/2) - (self.scrollView.bounds.size.width/2); 
[self.scrollView setContentOffset:CGPointMake(newContentOffsetX, 0) animated:YES]; 
Смежные вопросы