您的位置:首页 > 产品设计 > UI/UE

UICollectionView在初始化的时候移动到某个距离

2015-08-19 20:32 525 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: