#pragma mark -- 使用场景:选中非第一张图片用CollectionView进行浏览时,CollectionView滑动到对应的位置
#pragma mark -- 重点在于UICollectionViewFlowLayout的prepareLayout方法的使用
#pragma mark -- 自己定义UICollectionViewFlowLayout的h文件
@interface SSCollectionViewFlowLayout : UICollectionViewFlowLayout
/**
* collectionView的偏移量
*/
@property (nonatomic, assign) CGPoint offsetpoint;
@end
#pragma mark -- 自己定义UICollectionViewFlowLayout的m文件
@implementation SSCollectionViewFlowLayout
- (instancetype)init{
self = [super init];
if (self) {
self.scrollDirection = UICollectionViewScrollDirectionHorizontal;
}
return self;
}
- (void)prepareLayout{
[super prepareLayout];
self.collectionView.contentOffset = self.offsetpoint;
}
- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)oldBounds{
return NO;
}
#pragma mark -- 剩下的工作就是在UICollectionView 所在的ViewController设置偏移量
@property (nonatomic, strong) SSCollectionViewFlowLayout *viewLayout;
@property (nonatomic, strong) UICollectionView *ssCollectionView;
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
self.ssCollectionView.frame = CGRectMake(0.f, 0.f, ScreenWidth, ScreenHeight);
self.viewLayout.offsetpoint = CGPointMake(ScreenWidth *self.indexNumber, 0.f);
}
- (UICollectionView *)ssCollectionView{
if (_ssCollectionView != nil) {
return _ssCollectionView;
}
self.viewLayout = [[SSCollectionViewFlowLayout alloc] init];
_ssCollectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:self.viewLayout];
_ssCollectionView.showsHorizontalScrollIndicator = FALSE; // 去掉滚动栏
_ssCollectionView.pagingEnabled = YES;
_ssCollectionView.delegate = self;
_ssCollectionView.dataSource = self;
[_ssCollectionView registerClass:[CustomCollectionViewCell class] forCellWithReuseIdentifier:@"CollectionCell"];
return _ssCollectionView;
}