У меня есть 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;
}
}];
}
не могли бы вы показать, как вы добавили _collectionView и другой вид в UIScrollView? – nikhilgohil11
@ nikhilgohil11: я добавил их в раскадровку, затем я установилScrollViewContentSize в метод viewDidAppear! –
Либо ваш размер прокрутки или его содержимое снова сбрасываются на старый кадр. вы можете использовать метод NSLog in-scrollViewDidScroll: делегировать и проверить размер содержимого scrollview так же, как и то, что вы установили в viewDidAppear: – nikhilgohil11