Я сталкиваюсь с той же проблемой, что и here, которая является тем, что большой UICollectionViewCell (более чем вдвое превышает высоту UICollectionView) исчезает при заданном смещении прокрутки, а затем снова появляется после данного сдвига прокрутки.Большой UICollectionViewCell исчезает при прокрутке
Я реализовал @JonathanCichon solution, который подкласс UICollectionView и выполнить пользовательское действие на _visibleBounds
(я знаю, что это частный API, но независимо от того, мне не нужно, чтобы представить его на Apple Store)
Вот мой собственный не вид коллекции:
#import "CollectionView.h"
@interface UICollectionView()
- (CGRect)_visibleBounds;
@end
@implementation CollectionView
- (CGRect)_visibleBounds
{
CGRect rect = [super _visibleBounds];
rect.size.height = [self heightOfLargestVisibleCell];
return rect;
}
- (CGFloat)heightOfLargestVisibleCell
{
// get current screen height depending on orientation
CGFloat screenSize = [self currentScreenHeight];
CGFloat largestCell = 0;
NSArray *visibleCells = self.visibleCells;
// get the largest height between visibleCells
for (UITableViewCell *c in visibleCells)
{
CGFloat h = c.frame.size.height;
largestCell = h > largestCell ? h : largestCell;
}
// return higher value between screen height and higher visible cell height
return MAX(largestCell, screenSize);
}
Это работает, больше не исчез прокрутки, но я до сих пор есть проблема: если я выполнить reloadData
, когда моя позиция прокрутки находится в середине большой клетки, она исчезнет, как раньше ... Я заметил, что после перезагрузки данных, visibleCells
возвращение nil
(в моем heightOfLargestVisibleCell
методе), поэтому она принимает мою высоту экрана для _visibleBounds
, но так как высота экрана < к текущей видимой высоте ячейки, это один не отображаются ...
Кто-то уже сталкивалось с этой проблемой?
Thx заблаговременно
Thx много, он работает как шарм! – Yaman