2013-12-15 3 views
0

У меня есть scrollview с subviews. Subviews являются collectionview и другими views.when пользователя нажмите кнопку, чтобы добавить в collectionview, добавили к collectionview и я обновить новый кадр нового элемента для collectionview (3 пункта 1 строки), после того, как я обновить новый кадр для другого subviews .Everything нормально. Но когда я прокручиваю scrollview, все subviews верните старую позицию! я не знаю, что происходит!UIScrollView Auto reload subview position

- (void)buttonAddPressed:(NSIndexPath *)indexPath { 
    [_productImages addObject:[UIImage imageNamed:@"4.jpg"]]; 
    [_collectionView insertItemsAtIndexPaths:@[indexPath]]; 
    double delayInSeconds = 0.5; 
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); 
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
     float oldHeight = _collectionView.frame.size.height; 
     float newHeight = _collectionView.contentSize.height; 
     NSLog(@"new height %f",newHeight); 
     [UIView animateWithDuration:0.1 animations:^{ 
      CGRect collectionViewFrame = _collectionView.frame; 
      collectionViewFrame.size.height = newHeight; 
      _collectionView.frame = collectionViewFrame; 
     }]; 
     [self scrollViewChangeHeight:(float)(newHeight - oldHeight)]; 
    }); 
} 
- (void)scrollViewChangeHeight:(float)heightadd { 
    // thay doi chieu cao cua scrollview 
    CGSize scrollViewContentSize = _scrollView.contentSize; 
    scrollViewContentSize.height += heightadd; 
    [_scrollView setContentSize:scrollViewContentSize]; 
    // di chuyen cac phan tu ben trong 
    [UIView animateWithDuration:0.1 animations:^{ 
     for (UIView *view in _viewsUnderCollectionView) { 
      CGRect viewFrame = view.frame; 
      viewFrame.origin.y += heightadd; 
      view.frame = viewFrame; 
     } 
    }]; 
} 
+0

не могли бы вы показать, как вы добавили _collectionView и другой вид в UIScrollView? – nikhilgohil11

+0

@ nikhilgohil11: я добавил их в раскадровку, затем я установилScrollViewContentSize в метод viewDidAppear! –

+0

Либо ваш размер прокрутки или его содержимое снова сбрасываются на старый кадр. вы можете использовать метод NSLog in-scrollViewDidScroll: делегировать и проверить размер содержимого scrollview так же, как и то, что вы установили в viewDidAppear: – nikhilgohil11

ответ

Смежные вопросы