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

首頁 > 系統 > iOS > 正文

IOS 仿時光網選票UI實例代碼

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

一、項目簡介

該項目利用UIScrollView的各種滾動事件的監聽,仿造時光網選擇電影票的UI而開發的一個自定義View。使用簡單,可擴展性很強。具備點擊每個Item進行選票功能,選票居中功能,滑動時自動選擇距離中間最近的View處于選中狀態,而且對于滑動時松開手的時候是否有初始速度進行了區分處理。案例演示如下:<br/>


仿時光網選票UI

二、項目講解

1、初始化UIScrollView中每個Item的View,把每個View放到_viewArray數組中,方便接下來的定位和管理。每一個View中包含一個UIImageView,把每一個UIImageView放在_imageViewArray數組中,方便接下來的進行隨著滑動的放大和縮小操作。

-(instancetype)initViewWithImageArray:(NSArray *)imageArray{if (!imageArray) {return nil;}if (imageArray.count<1) {return nil;}NSInteger totalNum = imageArray.count;self = [super initWithFrame:CGRectMake(0, 40, SCREEN_WIDTH, 120)];if (self) {_scrollview = [[UIScrollView alloc] initWithFrame:self.bounds];_scrollview.contentSize = CGSizeMake(LEFT_SPACE*2+SELECT_VIEW_WIDTH+(totalNum-1)*NORMAL_VIEW_WIDTH+(totalNum-1)*ITEM_SPACE, 120);_scrollview.delegate = self;_scrollview.showsHorizontalScrollIndicator = NO;_scrollview.decelerationRate = UIScrollViewDecelerationRateFast;[self addSubview:_scrollview];UIView *backView = [[UIView alloc] initWithFrame:CGRectMake(-SCREEN_WIDTH, 0, _scrollview.contentSize.width+SCREEN_WIDTH*2, _scrollview.contentSize.height-20)];backView.backgroundColor = [UIColor lightGrayColor];[_scrollview addSubview:backView];_imageViewArray = [NSMutableArray array];_viewArray = [NSMutableArray array];CGFloat offsetX = LEFT_SPACE;for (int i=0; i<totalNum; i++) {UIView *view = [[UIView alloc] initWithFrame:CGRectMake(offsetX, 0, NORMAL_VIEW_WIDTH, NORMAL_VIEW_HEIGHT)];[_scrollview addSubview:view];[_viewArray addObject:view];offsetX += NORMAL_VIEW_WIDTH+ITEM_SPACE;CGRect rect;if (i==0) {rect = CGRectMake(-(SELECT_VIEW_WIDTH-NORMAL_VIEW_WIDTH)/2, 0, SELECT_VIEW_WIDTH, SELECT_VIEW_HEIGHT);}else{rect = CGRectMake(0, 0, NORMAL_VIEW_WIDTH, NORMAL_VIEW_HEIGHT);}UIImageView *imageView = [[UIImageView alloc] initWithFrame:rect];imageView.image = imageArray[i];imageView.tag = i;imageView.userInteractionEnabled = YES;UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(clickImage:)];[imageView addGestureRecognizer:tap];[view addSubview:imageView];[_imageViewArray addObject:imageView];}}return self;}

2、在滑動的過程中,我們實時的需要改變計算哪一個Item距離中間最近,在過渡到最中間的過程中,選中的Item距離中間越近,選中Item的frame越大,反則越小。

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{int currentIndex = scrollView.contentOffset.x/(NORMAL_VIEW_WIDTH+ITEM_SPACE);if (currentIndex>_imageViewArray.count-2||currentIndex<0) {return;}int rightIndex = currentIndex+1;UIImageView *currentImageView = _imageViewArray[currentIndex];UIImageView *rightImageView = _imageViewArray[rightIndex];CGFloat scale = (scrollView.contentOffset.x-currentIndex*(NORMAL_VIEW_WIDTH+ITEM_SPACE))/(NORMAL_VIEW_WIDTH+ITEM_SPACE);//NSLog(@"%f",scale);CGFloat width = SELECT_VIEW_WIDTH-scale*(SELECT_VIEW_WIDTH-NORMAL_VIEW_WIDTH);CGFloat height = SELECT_VIEW_HEIGHT-scale*(SELECT_VIEW_HEIGHT-NORMAL_VIEW_HEIGHT);if (width<NORMAL_VIEW_WIDTH) {width = NORMAL_VIEW_WIDTH;}if (height<NORMAL_VIEW_HEIGHT) {height = NORMAL_VIEW_HEIGHT;}if (width>SELECT_VIEW_WIDTH) {width = SELECT_VIEW_WIDTH;}if (height>SELECT_VIEW_HEIGHT) {height = SELECT_VIEW_HEIGHT;}CGRect rect = CGRectMake(-(width-NORMAL_VIEW_WIDTH)/2, 0, width, height);currentImageView.frame = rect;width = NORMAL_VIEW_WIDTH+scale*(SELECT_VIEW_WIDTH-NORMAL_VIEW_WIDTH);height = NORMAL_VIEW_HEIGHT+scale*(SELECT_VIEW_HEIGHT-NORMAL_VIEW_HEIGHT);if (width<NORMAL_VIEW_WIDTH) {width = NORMAL_VIEW_WIDTH;}if (height<NORMAL_VIEW_HEIGHT) {height = NORMAL_VIEW_HEIGHT;}if (width>SELECT_VIEW_WIDTH) {width = SELECT_VIEW_WIDTH;}if (height>SELECT_VIEW_HEIGHT) {height = SELECT_VIEW_HEIGHT;}rect = CGRectMake(-(width-NORMAL_VIEW_WIDTH)/2, 0, width, height);NSLog(@"%@",NSStringFromCGRect(rect));rightImageView.frame = rect;}

3、點擊某一個Item,讓Item處于中間選中狀態。

-(void)clickImage:(UITapGestureRecognizer *)tap{UIImageView *imageView = (UIImageView *)tap.view;NSInteger tag = imageView.tag;UIView *containerView = _viewArray[tag];CGFloat offsetX = CGRectGetMidX(containerView.frame)-SCREEN_WIDTH/2;[_scrollview scrollRectToVisible:CGRectMake(offsetX, 0, SCREEN_WIDTH, 120) animated:YES];if (_delegate && [_delegate respondsToSelector:@selector(itemSelected:)]) {[_delegate itemSelected:tag];}}

4、當用戶在滑動結束,并具有初始速度的時候,當滑動停止的時候,我們需要把距離中間最近Item定位到最中間。

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{int currentIndex = roundf(scrollView.contentOffset.x/(NORMAL_VIEW_WIDTH+ITEM_SPACE));UIView *containerView = _viewArray[currentIndex];CGFloat offsetX = CGRectGetMidX(containerView.frame)-SCREEN_WIDTH/2;[_scrollview scrollRectToVisible:CGRectMake(offsetX, 0, SCREEN_WIDTH, 120) animated:YES];if (_delegate && [_delegate respondsToSelector:@selector(itemSelected:)]) {[_delegate itemSelected:currentIndex];}}

5、當用戶在滑動結束的時候,但是沒有初始速度的時候,此時不會觸發-(void)scrollViewDidEndDecelerating:(UIScrollView )scrollView方法,我們需要在-(void)scrollViewDidEndDragging:(UIScrollView )scrollView willDecelerate:(BOOL)decelerate方法中,進行處理。

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{if (!decelerate) {int currentIndex = roundf(scrollView.contentOffset.x/(NORMAL_VIEW_WIDTH+ITEM_SPACE));UIView *containerView = _viewArray[currentIndex];CGFloat offsetX = CGRectGetMidX(containerView.frame)-SCREEN_WIDTH/2;[_scrollview scrollRectToVisible:CGRectMake(offsetX, 0, SCREEN_WIDTH, 120) animated:YES];if (_delegate && [_delegate respondsToSelector:@selector(itemSelected:)]) {[_delegate itemSelected:currentIndex];}}}

6、注意點,設置_scrollview.decelerationRate = UIScrollViewDecelerationRateFast;減慢UIScrollView滑動速度。會使用戶體驗更好。

三、項目使用

1、本項目支持CocosPod,引用工程代碼如下:

pod 'YXFilmSelectView', '~> 0.0.1'

2、使用方法

YXFilmSelectView *filmSelectView = [[YXFilmSelectView alloc] initViewWithImageArray:imageArray];filmSelectView.delegate = self;[self.view addSubview:filmSelectView];

3、提供YXFilmSelectViewDelegate代理,用于每一個Item處于選中狀態的處理。

- (void)itemSelected:(NSInteger)index{_containerView.backgroundColor = _colorArray[index%_colorArray.count];_showLabel.text = [NSString stringWithFormat:@"%zi",index];}

四、Demo下載地址

Demo下載地址

以上就是IOS 仿時光網選票UI實例,有需要的朋友可以參考下,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区三区视频在线观看| 98视频在线噜噜噜国产| 亚洲国产一区二区三区四区| 欧美亚洲另类激情另类| 亚洲精品国精品久久99热一| 中文字幕v亚洲ⅴv天堂| 岛国av一区二区在线在线观看| 日本精品一区二区三区在线| 欧美在线免费视频| 亚洲国产精品久久91精品| 欧美日韩国产专区| 久久久97精品| 一本色道久久综合狠狠躁篇怎么玩| 日韩综合中文字幕| 超在线视频97| 欧美成人国产va精品日本一级| 日韩精品福利网站| 久久香蕉国产线看观看av| 亚洲在线www| 精品一区二区三区三区| 亚洲桃花岛网站| 午夜欧美不卡精品aaaaa| 亚洲网站在线观看| 亚洲性av在线| 国产成人一区二区三区小说| 国产精品视频永久免费播放| 搡老女人一区二区三区视频tv| 欧美风情在线观看| 久久久久一本一区二区青青蜜月| 97视频在线观看免费高清完整版在线观看| 北条麻妃一区二区在线观看| 国产区亚洲区欧美区| 欧美尤物巨大精品爽| 韩国视频理论视频久久| 在线精品视频视频中文字幕| 国产精品美女午夜av| 久久免费观看视频| 国内精品400部情侣激情| 日本久久精品视频| 曰本色欧美视频在线| 国产精品电影在线观看| 欧美亚洲免费电影| 91中文字幕在线观看| 欧美特级www| 欧美大秀在线观看| 精品国产电影一区| 日韩国产欧美精品一区二区三区| 精品人伦一区二区三区蜜桃免费| 中文字幕亚洲一区| 91九色综合久久| 久久精品国产久精国产思思| 国语自产偷拍精品视频偷| 欧美激情精品在线| 精品亚洲国产视频| 7777kkkk成人观看| 国产精品久久电影观看| 精品中文字幕在线| 欧美精品日韩www.p站| 日本韩国欧美精品大片卡二| 国产有码一区二区| 欧美午夜视频一区二区| 久久久久久这里只有精品| 高清欧美电影在线| 欧美电影《睫毛膏》| 欧美日韩黄色大片| 一区二区在线免费视频| 日韩成人小视频| 亚洲网址你懂得| 国内精品小视频在线观看| 欧美午夜影院在线视频| 日韩欧美亚洲范冰冰与中字| 亚洲xxxxx| 国产精品视频午夜| 欧美高清视频在线观看| 亲子乱一区二区三区电影| 国产午夜精品免费一区二区三区| 久久精品国产欧美亚洲人人爽| 成人乱人伦精品视频在线观看| 亚洲欧美成人精品| 97精品在线视频| 中文字幕亚洲一区在线观看| 国内精品中文字幕| 国产99久久精品一区二区| 午夜精品免费视频| 国产日韩专区在线| 亚洲精品av在线| 欧洲精品在线视频| 欧美精品videos另类日本| 91久久精品国产| 欧美激情手机在线视频| 亚洲国产成人精品久久久国产成人一区| 亚洲国产毛片完整版| 18久久久久久| 日本不卡免费高清视频| 国产性猛交xxxx免费看久久| 日本高清不卡的在线| 91中文精品字幕在线视频| 亚洲自拍另类欧美丝袜| 91色琪琪电影亚洲精品久久| 川上优av一区二区线观看| 91牛牛免费视频| 成人精品一区二区三区电影黑人| 91在线色戒在线| 亚洲成人久久电影| 欧美华人在线视频| 欧美刺激性大交免费视频| 色久欧美在线视频观看| 91po在线观看91精品国产性色| 青青久久aⅴ北条麻妃| 国产视频精品xxxx| 在线亚洲欧美视频| 91人人爽人人爽人人精88v| 成人春色激情网| 欧美高清不卡在线| 欧美日韩一二三四五区| 亚洲精品中文字幕av| 久久99精品国产99久久6尤物| 欧美一级电影免费在线观看| 国产午夜精品美女视频明星a级| 亚洲欧美中文日韩在线v日本| 欧美精品18videos性欧| 亚洲福利视频在线| 最新69国产成人精品视频免费| 深夜精品寂寞黄网站在线观看| 亚洲欧美中文另类| 亚洲欧美激情另类校园| 久热精品视频在线观看一区| 久久久久国产精品www| 日韩二区三区在线| 国产精品三级网站| 精品视频偷偷看在线观看| 91av免费观看91av精品在线| 亚洲一区二区三区xxx视频| 国产日本欧美视频| 精品福利免费观看| 92国产精品久久久久首页| 日本aⅴ大伊香蕉精品视频| 欧美大片第1页| 热99久久精品| 欧美性猛xxx| 久久久久免费视频| 国产精品人成电影在线观看| 欧洲精品在线视频| 免费97视频在线精品国自产拍| 久久免费精品日本久久中文字幕| 欧美日韩亚洲一区二区| 色哟哟网站入口亚洲精品| 国产精品一区二区三区成人| 日韩在线观看网站| 日韩影视在线观看| 国产日韩欧美自拍| 91久久久久久久久久久| 亚洲永久免费观看| 国产婷婷成人久久av免费高清| 国产欧美日韩中文字幕在线| 久久这里有精品视频| 久久久欧美一区二区| 97色在线播放视频| 久久亚洲综合国产精品99麻豆精品福利| 亚洲最大的成人网| 亚洲精品一区二区久| 按摩亚洲人久久| 国产成人综合av| 久久伊人精品视频|