亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

2020-07-26 03:25:08
字體:
來源:轉載
供稿:網友

以前瀑布流的時候使用過UICollectionView,但是那時使用的是系統自帶的UICollectionViewFlowLayout布局,今天看文章,看到UICollectionViewFlowLayout自定義相關的東西,于是動手寫了一個簡單圖片瀏覽的demo,熟練一些UICollectionViewFlowLayout自定義布局。

#import <UIKit/UIKit.h>@interface JWCollectionViewFlowLayout : UICollectionViewFlowLayout@end

自定義UICollectionViewFlowLayout,首先繼承UICollectionViewFlowLayout,實現一下幾個方法

#define screenWidth [UIScreen mainScreen].bounds.size.width#define MaxChangeRange 100#import "JWCollectionViewFlowLayout.h"@implementation JWCollectionViewFlowLayout-(void)prepareLayout{ self.scrollDirection = UICollectionViewScrollDirectionHorizontal; self.itemSize = CGSizeMake(300, 500);}- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds{ return YES;}- (nullable NSArray<__kindof UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect{ NSArray *array = [super layoutAttributesForElementsInRect:rect]; CGRect visibleRect = CGRectMake(self.collectionView.contentOffset.x, 0, self.collectionView.bounds.size.width, self.collectionView.bounds.size.height); for (UICollectionViewLayoutAttributes *attr in array) {  if (CGRectIntersectsRect(attr.frame, rect)) {   BOOL isAtRight = YES;   CGFloat distance = (attr.center.x - CGRectGetMidX(visibleRect));   if (distance<0) {    distance = -distance;    isAtRight = NO;   }   CGFloat precent ;   if (distance < 180)   {    precent = 1.0;   }   else   {    precent = ((screenWidth / 2) - distance) / (screenWidth / 2);   }   CATransform3D transform = CATransform3DIdentity;   transform.m34 = 1.0 / 600;   if (precent < 0.5) {    precent = 0.5;   }   transform = CATransform3DScale(transform, 1, precent, 1);   CGFloat p = isAtRight?M_PI_4:-M_PI_4;   transform = CATransform3DRotate(transform, p * (1 - precent), 0, 1, 0);   attr.transform3D = transform;   attr.zIndex = 1;   attr.alpha = precent;   } } return array;}- (CGPoint)targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset withScrollingVelocity:(CGPoint)velocity{ CGFloat offset = MAXFLOAT; CGFloat hCenter = proposedContentOffset.x + (CGRectGetWidth(self.collectionView.bounds) / 2.0); CGRect currentRect = CGRectMake(proposedContentOffset.x, 0, self.collectionView.bounds.size.width, self.collectionView.bounds.size.height); NSArray* array = [super layoutAttributesForElementsInRect:currentRect]; for (UICollectionViewLayoutAttributes* layoutAttributes in array) {  CGFloat itemHorizontalCenter = layoutAttributes.center.x;  if (ABS(itemHorizontalCenter - hCenter) < ABS(offset))  {   offset = itemHorizontalCenter - hCenter;  } } return CGPointMake(proposedContentOffset.x + offset, proposedContentOffset.y);}

使用

-(void)setupUI{ JWCollectionViewFlowLayout *flowLayout = [[JWCollectionViewFlowLayout alloc] init]; UICollectionView *imgBrowseView = [[UICollectionView alloc] initWithFrame:self.view.bounds collectionViewLayout:flowLayout]; imgBrowseView.dataSource = self; imgBrowseView.delegate = self; imgBrowseView.backgroundColor = [UIColor whiteColor]; [self.view addSubview:imgBrowseView]; _imgBrowseView = imgBrowseView; [self.imgBrowseView registerNib:[UINib nibWithNibName:@"CustumCollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"cell"];}

demo:https://github.com/jiangtaidi/JWImageBrowseDemo.git

運行結果:

以上就是本文的全部內容,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
最近的2019中文字幕免费一页| 性欧美在线看片a免费观看| 91久久精品在线| 亚洲午夜性刺激影院| 久久亚洲影音av资源网| 亚洲无av在线中文字幕| 国产精品最新在线观看| 日韩大片免费观看视频播放| 国产精品久久久久久久久久免费| 精品成人69xx.xyz| 欧美激情视频给我| 亚洲情综合五月天| 91精品视频观看| 欧美成人精品xxx| 欧美亚洲在线观看| 久久久亚洲精品视频| 亚洲人成电影网站色…| 97精品国产aⅴ7777| 成人妇女淫片aaaa视频| 欧美日韩999| 久久综合免费视频| 性亚洲最疯狂xxxx高清| 日韩精品高清视频| 国产精品成人一区二区三区吃奶| 成人写真视频福利网| 日韩国产精品一区| 国产亚洲欧美日韩精品| 插插插亚洲综合网| 中文在线不卡视频| 欧美在线国产精品| 久久影视电视剧凤归四时歌| 欧美精品激情在线观看| 红桃视频成人在线观看| 亚洲精品久久久久中文字幕二区| 欧美国产日韩一区二区| 国产精品电影网| 97在线观看视频| 国产区精品在线观看| 欧美大成色www永久网站婷| 亚洲国产精品视频在线观看| 成人免费淫片aa视频免费| 日韩在线欧美在线国产在线| 人人做人人澡人人爽欧美| 91亚洲精品久久久久久久久久久久| 色婷婷综合久久久久| 国产欧美日韩免费看aⅴ视频| 亚洲自拍偷拍区| 日韩视频免费大全中文字幕| 精品国产拍在线观看| 热草久综合在线| 欧美大片在线看免费观看| 一本大道香蕉久在线播放29| 日韩欧美福利视频| 中文字幕亚洲激情| 欧美亚洲一区在线| 欧美天堂在线观看| 国产精品视频网址| 国产精品18久久久久久麻辣| 日韩在线资源网| 亚洲精品第一国产综合精品| 97视频在线观看免费高清完整版在线观看| 色老头一区二区三区在线观看| 日韩美女免费线视频| 亚洲mm色国产网站| 国产精品视频自在线| 国内揄拍国内精品| 欧美视频一区二区三区…| 色综合久久中文字幕综合网小说| 亚洲国产欧美一区二区三区同亚洲| 午夜精品久久久久久久男人的天堂| 欧美亚洲第一区| 日韩av手机在线看| 日韩网站在线观看| 久久久久99精品久久久久| 亚洲第一中文字幕在线观看| 成人激情视频小说免费下载| 国产欧美精品一区二区| 亚洲欧美成人在线| 视频一区视频二区国产精品| 日韩在线视频免费观看高清中文| 精品呦交小u女在线| 45www国产精品网站| 国产婷婷成人久久av免费高清| 国产精品久久久| 国产免费一区视频观看免费| 超碰97人人做人人爱少妇| 亚洲男人天天操| 亚洲高清在线观看| 欧美亚洲成人网| 国产欧亚日韩视频| 国产欧美精品va在线观看| 日韩人体视频一二区| 国产精品久久久久久久9999| 国产精品av在线| 色婷婷成人综合| 亚洲二区在线播放视频| 精品在线观看国产| 国模私拍一区二区三区| 国模精品一区二区三区色天香| 亚洲国产成人精品久久久国产成人一区| 欧美日韩国产色| 亚洲风情亚aⅴ在线发布| 亚洲精品wwww| 国产一区二区三区在线免费观看| 2019亚洲日韩新视频| 97国产在线观看| 岛国视频午夜一区免费在线观看| yw.139尤物在线精品视频| 久久精品国产亚洲精品| 成人xxxx视频| 日韩精品免费在线| 成人免费高清完整版在线观看| 国产97在线|日韩| 97精品一区二区视频在线观看| 疯狂做受xxxx高潮欧美日本| 国产v综合v亚洲欧美久久| 91精品国产自产在线| 97精品国产aⅴ7777| 91大神福利视频在线| 久久精视频免费在线久久完整在线看| 91产国在线观看动作片喷水| 亚洲免费一级电影| 国产成人一区二区三区电影| 日韩精品视频三区| 青青a在线精品免费观看| 成人在线激情视频| 97精品国产97久久久久久免费| 国产精品视频精品| 美日韩精品免费观看视频| 91久久综合亚洲鲁鲁五月天| 国产精品一久久香蕉国产线看观看| 亚洲老头同性xxxxx| 久久中文字幕在线| 欧美性videos高清精品| 久久久久久免费精品| 欧美在线视频网| 成人免费视频网址| 国产成人精品久久亚洲高清不卡| 亚洲欧美中文日韩在线v日本| 九色精品免费永久在线| 精品久久久久久中文字幕| 国产精品三级在线| 国产成人精品在线视频| 亚洲精品日韩丝袜精品| 97香蕉超级碰碰久久免费软件| 日韩成人av在线播放| 精品国产一区二区三区在线观看| 中文字幕日韩精品有码视频| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲一区二区久久久| 91在线国产电影| 久久伊人91精品综合网站| 日韩午夜在线视频| 中文字幕欧美精品在线| 狠狠色狠狠色综合日日小说| 久久精品国产69国产精品亚洲| 亚洲男人天堂久| 国产精品吹潮在线观看| 亚洲一区二区在线播放| 国产精品久久久999| 成人黄色中文字幕| 日韩av在线资源| 亚洲精品在线不卡| 亚洲精品狠狠操|