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

首頁 > 系統 > iOS > 正文

淺析iOS多視圖滑動點擊切換的集成

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

前言

多視圖滑動點擊切換這個視圖在很多App都有用到,我對這個View進行了封裝,外界只需要調用一個接口,就能實現這個效果,使用方法和系統的tabbarController很相似。

外界只需要調用下面這個接口即可集成.

/** * 添加一個子控制器 */- (void)addSubItemWithViewController:(UIViewController *)viewController;

HYTabbarView效果圖如下

HYTabbarView可靈活配置一屏寬顯示多少個標題,以及標題欄的高度,具體看項目需求

#define HYTabbarViewHeight 49 //頂部標簽條的高度#define HYColumn 4  //一屏幕寬顯示4個標題

實現思路詳解

     1、界面分析:分為上下部分,頂部UIScrollView,底部UICollectionView.再實現兩部分的聯動即可實現 (底部視圖相對復雜,占用內存大,底部用UICollectionView實現會比用UIScrollView性能好很多)

     2、每一個標題對應一個View視圖,View視圖交由相應的控制器來管理,代碼結構十分清晰.做到不同View上的業務邏輯高聚合.也不會產生耦合性

     3、上下兩部分的聯動,這里是同過KVO實現的,監聽當前的selectedIndex,底部視圖滾動時,修改selectedIndex的值.在KVO監聽的回調方法里讓標題居中.

     4、其他細節相對簡單,大家不看代碼都知道如何處理,比如:點擊頂部標題,設置按鈕選中,切換到對應的CollectionCell

UI結構示意圖

代碼片段:

1.外界傳個控制器和一個標題,添加一個欄目

//外界傳個控制器,添加一個欄目- (void)addSubItemWithViewController:(UIViewController *)viewController{    UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom]; [self.tabbar addSubview:btn]; [self setupBtn:btn withTitle:viewController.title]; [btn addTarget:self action:@selector(itemSelected:) forControlEvents:UIControlEventTouchUpInside]; [self.subViewControllers addObject:viewController];}

2.KVO監聽當前選中View的序號值

//viewDidLoad中添加觀察者[self addObserver:self forKeyPath:@"selectedIndex" options:NSKeyValueObservingOptionOld |NSKeyValueObservingOptionNew context:@"scrollToNextItem"]; //讓標題按鈕居中算法- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{    if (context == @"scrollToNextItem") {  self.prevSelectedIndex = [change[@"old"] integerValue];  if (self.prevSelectedIndex == self.selectedIndex) {   return;  }  //設置按鈕選中  [self itemSelectedIndex:self.selectedIndex];  UIButton * btn = self.titles[self.selectedIndex];    //讓選中按鈕居中  NSInteger min = HYColumn / 2 ;  if (_selectedIndex = self.titles.count - min) {   UIButton * tempBtn = self.titles[self.titles.count - min - 1];   CGFloat btnX = (HYColumn % 2 ) ? tempBtn.center.x : (tempBtn.center.x + btn.frame.size.width * 0.5) ;   CGFloat offsetX = _tabbar.center.x - btnX;   [UIView animateWithDuration:0.25 animations:^{    _tabbar.contentOffset = CGPointMake(- offsetX, 0);   }];    }else if (_selectedIndex > min && _selectedIndex < self.titles.count - min && self.titles.count > HYColumn ) {   CGFloat btnX = (HYColumn % 2 ) ? btn.center.x : (btn.center.x - btn.frame.size.width * 0.5) ;   CGFloat offsetX = _tabbar.center.x - btnX;   [UIView animateWithDuration:0.25 animations:^{    _tabbar.contentOffset = CGPointMake( - offsetX, 0);   }];  } } else {  [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; }} 

控制器代碼如下

使用方法類似系統的UITabbarController,外界只需直接傳入控制器.

- (void)viewDidLoad { [super viewDidLoad]; [self.view addSubview:self.tabbarView];}//懶加載- (HYTabbarView *)tabbarView{ if (!_tabbarView) {  _tabbarView = ({   HYTabbarView * tabbar = [[HYTabbarView alloc]initWithFrame:CGRectMake(0,30,[UIScreen mainScreen].bounds.size.width,600)];      for (NSInteger i = 0; i< 10; i ++) {        UIViewController * vc = [[UIViewController alloc]init];    vc.title = [NSString stringWithFormat:@"第%ld個",i+1];    [tabbar addSubItemWithViewController:vc];   }   tabbar;  }); } return _tabbarView;}

總結

以上就是iOS多視圖滑動點擊切換的集成的全部內容,希望對大家開發IOS的時候能有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线看日韩欧美| 国产精品自拍小视频| 中文字幕不卡av| 91网站在线看| 爱福利视频一区| 国产区精品在线观看| 亚洲男人天堂手机在线| 爽爽爽爽爽爽爽成人免费观看| 亚洲精品美女在线观看播放| www.亚洲天堂| 中文字幕亚洲色图| 国产精品黄页免费高清在线观看| 久久久www成人免费精品张筱雨| 亚洲欧美国产日韩天堂区| 日韩中文字幕在线| 国产在线视频不卡| 欧美激情久久久久| 成人精品视频99在线观看免费| 成人午夜一级二级三级| 91在线免费视频| 97精品久久久中文字幕免费| 欧美性猛交视频| 国产精品成人国产乱一区| 国自产精品手机在线观看视频| 精品视频在线观看日韩| 4p变态网欧美系列| 97久久伊人激情网| 久久成人综合视频| 亚洲国产精品久久久久秋霞不卡| 成人美女av在线直播| 久久中文久久字幕| 亚洲视频在线观看视频| 久久天天躁狠狠躁夜夜躁2014| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲人成网站999久久久综合| 日韩高清电影免费观看完整| 国产精品91在线| 国产欧亚日韩视频| 欧美日韩免费区域视频在线观看| 在线精品91av| 欧美黑人性视频| 国产在线观看一区二区三区| 国产精品自产拍在线观| www.久久撸.com| 亚洲人成电影在线观看天堂色| 亚洲免费伊人电影在线观看av| 亚洲综合大片69999| 国产精品精品视频一区二区三区| 久久中文久久字幕| 91精品国产高清久久久久久久久| www.亚洲一二| 国产色综合天天综合网| 高跟丝袜一区二区三区| 国产在线视频一区| 久久久亚洲精品视频| 欧美夫妻性生活xx| 神马久久久久久| 韩国三级日本三级少妇99| 欧美国产一区二区三区| 97涩涩爰在线观看亚洲| 91精品综合久久久久久五月天| 欧美另类极品videosbestfree| 日韩欧美中文在线| 中文字幕国产精品久久| 日韩在线观看网站| 欧美大片欧美激情性色a∨久久| 91久久综合亚洲鲁鲁五月天| 亚洲成人av在线| 国产成人一区三区| 欧美日韩高清在线观看| 国产91精品视频在线观看| 日韩精品高清在线观看| 亚洲午夜未删减在线观看| 久久国产加勒比精品无码| 精品福利免费观看| 色综合天天狠天天透天天伊人| 日韩中文综合网| 国产ts人妖一区二区三区| 欧美精品在线看| 日韩性生活视频| 国产999在线观看| 国产一区视频在线| 精品国内自产拍在线观看| 欧美在线中文字幕| 亚洲精品suv精品一区二区| 亚洲美女又黄又爽在线观看| 最近2019年日本中文免费字幕| 日韩女在线观看| 精品香蕉一区二区三区| 亚洲精品xxxx| 成人春色激情网| 日韩av片免费在线观看| 国产精品亚洲片夜色在线| 欧美亚洲第一页| 中文字幕日韩精品有码视频| 欧美国产日韩中文字幕在线| 国产精品久久网| 欧美国产一区二区三区| 国产精品入口日韩视频大尺度| 亚洲福利视频免费观看| 日韩成人在线网站| 成人www视频在线观看| 性亚洲最疯狂xxxx高清| 久久久久亚洲精品| 日韩精品免费在线视频观看| 亚洲精品视频在线观看视频| 国产日韩欧美视频| 精品国产乱码久久久久久天美| 亚洲精品成人av| www国产精品视频| 在线免费看av不卡| 亚洲va久久久噜噜噜| 欧美影院久久久| 国语自产精品视频在线看| 国产成人精品免费视频| 亚洲一区二区三区在线视频| 欧美日韩国产在线| 日韩在线观看免费av| 91久久夜色精品国产网站| 亚洲xxx自由成熟| 亚洲va欧美va在线观看| 91成人福利在线| 亚洲精品福利免费在线观看| 91精品综合久久久久久五月天| 国产不卡av在线| 欧美激情在线观看视频| 91精品综合久久久久久五月天| 久久久免费观看| 亚洲精品成a人在线观看| 亚洲午夜色婷婷在线| 丝袜一区二区三区| 国产精品一区二区三区毛片淫片| 福利一区视频在线观看| 97人洗澡人人免费公开视频碰碰碰| 亚洲偷欧美偷国内偷| 精品中文视频在线| 欧美日韩在线视频观看| 日韩av一区在线观看| 国产美女搞久久| 国产伦精品免费视频| 欧美国产日韩视频| 亚洲欧美精品一区二区| 亚洲欧美综合另类中字| 国产精品久久99久久| 91精品视频在线看| 久久国产精品久久久| 国产日韩欧美在线播放| 91久久久久久久久久久| 亚洲老板91色精品久久| 在线观看日韩www视频免费| 黑人巨大精品欧美一区二区| 精品国产一区二区三区久久| 亚洲国产女人aaa毛片在线| 欧美性视频网站| 亚洲精品v欧美精品v日韩精品| 国产精品日韩久久久久| 欧美国产高跟鞋裸体秀xxxhd| 国产精品久久不能| 国产成人综合一区二区三区| 国产精品色午夜在线观看| 日韩专区中文字幕| 亚州av一区二区| 成人激情春色网| 国产精品久久久久久久久久ktv|