精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

iOS開發之多表視圖滑動切換示例(仿"頭條"客戶端)

移動開發
廢話少說,先介紹一下功能點,下圖是整個Demo的功能點,最上面左邊的TabBarButtonItem是用來減少條目的,比如下圖有三個按鈕,點擊減號會減少一個條目。右邊的為增加一個條目。點擊相應的按鈕是切換到對應的表視圖上,下方紅色的是滑動的指示器,同時支持手勢滑動。運行具體效果如下圖所示。

好長時間沒為大家帶來iOS開發干貨的東西了,今天給大家分享一個頭條新聞客戶端各個類別進行切換的一個示例。在Demo中對所需的組件進行的簡單封裝,在封裝的組件中使用的是純代碼的形式,如果想要在項目中進行使用,稍微進行修改即可。

廢話少說,先介紹一下功能點,下圖是整個Demo的功能點,最上面左邊的TabBarButtonItem是用來減少條目的,比如下圖有三個按鈕,點擊減號會減少一個條目。右邊的為增加一個條目。點擊相應的按鈕是切換到對應的表視圖上,下方紅色的是滑動的指示器,同時支持手勢滑動。運行具體效果如下圖所示。

 

一:實現方案

最上方是一個View, View上面實例化了一些按鈕,平分屏幕的寬度,下方是一個ScrollView, ScrollView上面放了一些表視圖,點擊不同的Button, 滑動到對應的表示圖上。除了點擊按鈕,還可以進行滑動切換,切換時,紅色的指示器也會隨之滑動。

主要的技術點就是通過ScrollView的回調,通過事件的響應來改變ScrollView的ContentOffset的值。在回調中根據ContentOffset的值來計算紅色指示器的偏移量。

二:核心代碼

1.組件中的主要屬性

把上面整個視圖進行了封裝,命名為SlideTabBarView,下面的代碼是主要屬性:
 

  1. @interface SlideTabBarView()///@brife 整個視圖的大小 
  2. @property (assign) CGRect mViewFrame; 
  3. ///@brife 下方的ScrollView 
  4. @property (strong, nonatomic) UIScrollView *scrollView; 
  5. ///@brife 上方的按鈕數組 
  6. @property (strong, nonatomic) NSMutableArray *topViews; 
  7. ///@brife 下方的表格數組 
  8. @property (strong, nonatomic) NSMutableArray *scrollTableViews; 
  9. ///@brife TableViews的數據源 
  10. @property (strong, nonatomic) NSMutableArray *dataSource; 
  11. ///@brife 當前選中頁數 
  12. @property (assign) NSInteger currentPage; 
  13. ///@brife 下面滑動的View 
  14. @property (strong, nonatomic) UIView *slideView; 
  15. @end 

2.初始化方法如下,在調用初始化方法時需要傳入SlideTabBarView的frame和選項卡的個數,初始化函數會調用一系列的初始化方法對組件進行初始化,代碼如下:

  1. -(instancetype)initWithFrame:(CGRect)frame WithCount: (NSInteger) count{ 
  2. self = [super initWithFrame:frame]; 
  3.  
  4. if (self) { 
  5. _mViewFrame = frame; 
  6. _tabCount = count; 
  7. _topViews = [[NSMutableArray alloc] init]; 
  8. _scrollTableViews = [[NSMutableArray alloc] init]; 
  9.  
  10. [self initDataSource]; 
  11.  
  12. [self initScrollView]; 
  13.  
  14. [self initTopTabs]; 
  15.  
  16. [self initDownTables]; 
  17.  
  18. [self initDataSource]; 
  19.  
  20. [self initSlideView]; 
  21.  
  22.  
  23. return self; 

3.initDataSource方法主要負責模擬生成下方TableView要顯示的數據。代碼如下:

  1. #pragma mark -- 初始化表格的數據源 
  2. -(void) initDataSource{ 
  3. _dataSource = [[NSMutableArray alloc] initWithCapacity:_tabCount]; 
  4.  
  5. for (int i = 1; i <= _tabCount; i ++) { 
  6.  
  7. NSMutableArray *tempArray = [[NSMutableArray alloc] initWithCapacity:20]; 
  8.  
  9. for (int j = 1; j <= 20; j ++) { 
  10.  
  11. NSString *tempStr = [NSString stringWithFormat:@"我是第%d個TableView的第%d條數據。", i, j]; 
  12. [tempArray addObject:tempStr]; 
  13.  
  14. [_dataSource addObject:tempArray]; 

4.紅色滑動指示器的初始化代碼如下所示:

  1. #pragma mark -- 初始化滑動的指示View 
  2. -(void) initSlideView{ 
  3. CGFloat width = _mViewFrame.size.width / _tabCount; 
  4. _slideView = [[UIView alloc] initWithFrame:CGRectMake(0, TOPHEIGHT - 5, width, 5)]; 
  5. [_slideView setBackgroundColor:[UIColor redColor]]; 
  6. [self addSubview:_slideView]; 

5.ScrollView的初始化代碼如下, 指定ScrollView的大小位置以及背景顏色,并且設置分頁可用并添加代理。

  1. #pragma mark -- 實例化ScrollView 
  2. -(void) initScrollView{ 
  3. _scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, _mViewFrame.origin.y, _mViewFrame.size.width, _mViewFrame.size.height - TOPHEIGHT)]; 
  4. _scrollView.contentSize = CGSizeMake(_mViewFrame.size.width * _tabCount, _mViewFrame.size.height - 60); 
  5. _scrollView.backgroundColor = [UIColor grayColor]; 
  6.  
  7. _scrollView.pagingEnabled = YES; 
  8.  
  9. _scrollView.delegate = self; 
  10. [self addSubview:_scrollView]; 

6.添加上方的按鈕,根據傳入的個數來實例化多個按鈕。

  1. #pragma mark -- 實例化頂部的tab 
  2. -(void) initTopTabs{ 
  3. CGFloat width = _mViewFrame.size.width / _tabCount; 
  4.  
  5. for (int i = 0; i < _tabCount; i ++) { 
  6.  
  7. UIView *view = [[UIView alloc] initWithFrame:CGRectMake(i * width, 0, width, TOPHEIGHT)]; 
  8.  
  9. view.backgroundColor = [UIColor lightGrayColor]; 
  10.  
  11. if (i % 2) { 
  12. view.backgroundColor = [UIColor grayColor]; 
  13.  
  14. UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(00, width, TOPHEIGHT)]; 
  15. button.tag = i; 
  16. [button setTitle:[NSString stringWithFormat:@"按鈕%d", i+1] forState:UIControlStateNormal]; 
  17. [button addTarget:self action:@selector(tabButton:) forControlEvents:UIControlEventTouchUpInside]; 
  18. [view addSubview:button]; 
  19.  
  20.  
  21. [_topViews addObject:view]; 
  22. [self addSubview:view]; 

7.點擊按鈕觸發的方法如下:
 

  1. #pragma mark --點擊頂部的按鈕所觸發的方法 
  2. -(void) tabButton: (id) sender{ 
  3. UIButton *button = sender; 
  4. [_scrollView setContentOffset:CGPointMake(button.tag * _mViewFrame.size.width, 0) animated:YES]; 

8.初始化下方的多個表視圖:實例化表視圖,并指定委托回調。

  1. #pragma mark --初始化下方的TableViews 
  2. -(void) initDownTables{ 
  3.  
  4. for (int i = 0; i < _tabCount; i ++) { 
  5.  
  6. UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(i * _mViewFrame.size.width, 0, _mViewFrame.size.width, _mViewFrame.size.height - TOPHEIGHT)]; 
  7. tableView.delegate = self; 
  8. tableView.dataSource = self; 
  9.  
  10. [_scrollTableViews addObject:tableView]; 
  11. [_scrollView addSubview:tableView]; 

9.ScrollView的回調方法如下,下面***一個代理方法是根據ScrollView的偏移量來計算紅色指示器的偏移量,第二個是滑動到哪個tableView,然后進行哪個TableView的數據加載。

  1. #pragma mark -- scrollView的代理方法 
  2. -(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{ 
  3. [self scrollViewDidEndDecelerating:scrollView]; 
  4. - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 
  5. _currentPage = _scrollView.contentOffset.x/_mViewFrame.size.width; 
  6.  
  7. UITableView *currentTable = _scrollTableViews[_currentPage]; 
  8. [currentTable reloadData]; 
  9.  
  10. -(void)scrollViewDidScroll:(UIScrollView *)scrollView{ 
  11. if ([_scrollView isEqual:scrollView]) { 
  12. CGRect frame = _slideView.frame; 
  13. frame.origin.x = scrollView.contentOffset.x/_tabCount; 
  14. _slideView.frame = frame; 

10.TableView的代理方法如下,數據源就是我們剛才做的假數據,Cell是由Xib實現的,使用的時候注冊一下就可用了。

  1. pragma mark -- talbeView的代理方法 
  2. -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ 
  3. return 1
  4. -(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 
  5. NSMutableArray *tempArray = _dataSource[_currentPage]; 
  6. return tempArray.count; 
  7. -(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ 
  8. return 60
  9. -(UITableViewCell *)tableView:tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
  10.  
  11. BOOL nibsRegistered=NO; 
  12. if (!nibsRegistered) { 
  13. UINib *nib=[UINib nibWithNibName:@"SlideBarCell" bundle:nil]; 
  14. [tableView registerNib:nib forCellReuseIdentifier:@"SlideBarCell"]; 
  15. nibsRegistered=YES; 
  16.  
  17.  
  18. SlideBarCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SlideBarCell"]; 
  19. if ([tableView isEqual:_scrollTableViews[_currentPage]]) { 
  20. cell.tipTitle.text = _dataSource[_currentPage][indexPath.row]; 
  21.  
  22. return cell; 
  23.  
  24. Demo在GitHub上的分享地址:https://github.com/lizelu/SliderTabBar 
責任編輯:chenqingxiang 來源: CocoaChina
相關推薦

2015-07-13 14:05:32

ios開發多表視圖

2015-12-09 11:22:24

高仿今日頭條android源碼

2013-07-22 14:29:35

iOS開發ASIHTTPRequ

2014-08-11 16:35:35

KafkaJava客戶端

2011-06-15 17:28:23

Qt 多視圖 架構

2015-01-09 11:49:26

Android源碼下載

2015-03-30 14:24:06

網易布局

2009-12-25 15:12:01

WPF平臺

2017-09-12 17:05:02

AndroidLoading客戶端

2011-08-17 10:10:59

2021-09-22 15:46:29

虛擬桌面瘦客戶端胖客戶端

2014-09-02 10:55:25

iOS開發視圖切換

2010-05-31 10:11:32

瘦客戶端

2011-10-26 13:17:05

2013-07-04 10:01:04

2011-03-24 13:00:31

配置nagios客戶端

2011-03-02 14:36:24

Filezilla客戶端

2010-12-21 11:03:15

獲取客戶端證書

2022-11-29 17:08:03

開發Web客戶端

2011-03-21 14:53:36

Nagios監控Linux
點贊
收藏

51CTO技術棧公眾號

性感美女一区二区三区| 日韩精品一区二区在线视频| 中文字幕一区二区三区四区视频| 国产精品毛片久久| 精品国产露脸精彩对白| 99色精品视频| 午夜视频在线观看网站| 国产精品一区二区果冻传媒| 欧美性在线视频| 国产精品视频看看| 国内精品麻豆美女在线播放视频 | 九热这里只有精品| 激情综合网五月| 精品国产乱码久久久久久影片| 无码人妻丰满熟妇区五十路百度| 成人高清免费在线| 国产丝袜欧美中文另类| 99精品国产高清在线观看| 日韩免费av网站| 激情久久久久| 精品久久久av| 白白色免费视频| 成人在线超碰| 欧美精品自拍偷拍动漫精品| 国产xxxxx在线观看| 三级资源在线| 亚洲欧洲一区二区三区| 欧美深深色噜噜狠狠yyy| 亚洲精品成av人片天堂无码 | 国产成人一区二区在线| 久久久一区二区三区四区| 日韩.com| 亚洲日韩欧美视频一区| 99久久免费看精品国产一区| 免费一级欧美在线大片| 欧美日韩在线精品一区二区三区激情 | 泷泽萝拉在线播放| 久久久精品国产**网站| 精品电影一区二区三区| xxxxwww一片| 国产精品欧美一区二区三区不卡| 欧美三级中文字幕| 别急慢慢来1978如如2| 一区二区三区四区日本视频| 偷拍一区二区三区| 成人在线国产视频| 三级资源在线| 亚洲一二三四久久| 天堂8在线天堂资源bt| 尤物yw193can在线观看| 亚洲免费观看高清完整版在线观看| 亚洲一二三区在线| 午夜激情在线观看| 亚洲视频一区在线观看| 中文字幕剧情在线观看一区| 欧美三级理伦电影| 亚洲特黄一级片| 91视频成人免费| 91精品久久久久久粉嫩| 一区二区三区在线观看动漫| 黄色一级大片免费| 91福利区在线观看| 精品国产精品三级精品av网址| 东北少妇不带套对白| 激情国产在线| 色菇凉天天综合网| 中文字幕亚洲乱码| avtt久久| 精品国产一区二区三区久久久蜜月| 日本wwwwwww| 欧美有码在线| 国产一区二区免费| 九九热视频在线免费观看| 欧美另类视频| 97精品国产97久久久久久春色| 久久精品视频5| 美女精品自拍一二三四| 亚洲一区二区三区777| 成人午夜福利视频| 久久久久久久久蜜桃| 亚洲欧美日韩国产成人综合一二三区| 日本中文字幕伦在线观看| 亚洲日本中文字幕区| 久久亚洲精品无码va白人极品| 中文在线最新版地址| 欧美中文字幕一区二区三区亚洲| 天天看片天天操| 一区二区在线视频观看| 亚洲欧美国产视频| 男人晚上看的视频| 91久久亚洲| 国产精品视频白浆免费视频| 国产国语亲子伦亲子| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲高清在线观看一区| 久久一卡二卡| 欧美性大战久久| 日本中文字幕有码| 日韩高清欧美| 午夜精品在线视频| 国产精品久久久久久久一区二区 | 成人做爰66片免费看网站| 九一在线视频| 伊人开心综合网| 熟妇人妻va精品中文字幕| 懂色av色香蕉一区二区蜜桃| 日韩国产一区三区| 欧美成人黄色网| 三级在线观看一区二区 | 亚洲黄色小说网| 日本一区二区成人| 国产精品久久久久7777| 99精品国产九九国产精品| 国产婷婷成人久久av免费高清| 久久福利免费视频| 久热精品视频| 国产视频99| a篇片在线观看网站| 在线看不卡av| 一出一进一爽一粗一大视频| 亚洲天天影视网| 国产精品视频精品视频| 亚洲欧洲综合在线| 夜夜嗨av一区二区三区中文字幕| 欧美男女交配视频| 亚洲精品一级二级三级| 久久久这里只有精品视频| 99久久亚洲精品日本无码| 国产视频一区在线观看| 北条麻妃在线视频观看| 成人av综合网| 欧美日产国产成人免费图片| 国产一区二区在线不卡| 欧美国产精品v| 日韩精品一区二区三区色欲av| 欧美激情久久久久久久久久久| 欧美激情精品久久久久久变态| 国产精品无码久久久久成人app| 国产欧美日韩亚州综合 | 日本一级淫片免费放| 国产精品亚洲成人| 中国老女人av| 欧美经典一区| 欧美精品在线视频观看| 国产熟女一区二区丰满| 亚洲精品视频在线| 色姑娘综合天天| 一区二区电影在线观看| 51国偷自产一区二区三区| 成人免费网址| 欧美va天堂va视频va在线| 久久久久成人网站| 成人激情小说乱人伦| 青草青青在线视频| 全国精品免费看| 日韩av男人的天堂| yiren22亚洲综合伊人22| 欧美在线999| 色婷婷粉嫩av| 国产精品99久久久久久久女警| 一级一片免费播放| 91精品尤物| 97久久国产精品| 欧美女同网站| 欧美人与z0zoxxxx视频| 欧美黑吊大战白妞| 91麻豆产精品久久久久久| 凹凸日日摸日日碰夜夜爽1| 欧美色婷婷久久99精品红桃| 国产精品欧美日韩久久| 黄色片网站在线| 亚洲第一视频网站| 国产视频1区2区| 国产精品福利一区二区| 少妇熟女视频一区二区三区| 一区二区日本视频| 亚洲精品国产精品国自产观看| 91精品麻豆| 777精品视频| 91在线看片| 日韩精品一区二区三区四区| 国产又大又黑又粗免费视频| 国产欧美日韩精品a在线观看| 成人综合久久网| 精品不卡视频| 三区精品视频观看| 亚洲性视频在线| 日本一本a高清免费不卡| 久久五月精品| 日韩精品视频观看| 国产精品欧美综合亚洲| 天天色综合天天| 艳妇荡乳欲伦69影片| 91色视频在线| 激情成人在线观看| 老司机精品视频网站| 欧美一级特黄aaaaaa在线看片| 亚洲精品国产setv| 91国产丝袜在线放| 精品欧美一区二区三区在线观看| 欧美成人午夜免费视在线看片 | 日本www高清视频| 欧美精品综合| 一区二区不卡视频| 亚洲精品合集| 国产精品av一区| 台湾天天综合人成在线| 欧美一级片久久久久久久| www.久久ai| 这里只有精品视频在线| 四虎精品在永久在线观看 | 色综合久久综合网欧美综合网 | 成a人片在线观看www视频| 精品99一区二区| 国产精品嫩草影院桃色| 91精品福利视频| 日韩 欧美 综合| 亚洲一区在线观看免费| 色偷偷www8888| 国产午夜久久久久| 噜噜噜在线视频| 国产成人av电影在线观看| 91欧美视频在线| 久久亚洲欧洲| 国产欧美在线一区| 最新日韩在线| 无码人妻精品一区二区蜜桃网站| 欧美电影《睫毛膏》| 日本一区免费观看| 偷窥自拍亚洲色图精选| 国产九色精品| 7777精品| 国产精品9999久久久久仙踪林| 年轻的保姆91精品| 96pao国产成视频永久免费| 国外成人福利视频| 国产精品热视频| 成人啊v在线| 国产精品久久久久久久久久久久久久| 在线天堂资源www在线污| 97免费中文视频在线观看| a级大胆欧美人体大胆666| 韩剧1988免费观看全集| sis001亚洲原创区| 性欧美xxxx交| 天天综合av| 日韩免费黄色av| 国产v综合v| 国产精品视频1区| 六九午夜精品视频| 91免费福利视频| 欧美一区一区| 国产精品一国产精品最新章节| 国产精品久久久久av蜜臀| 含羞草久久爱69一区| 欧洲vs亚洲vs国产| 日韩精品久久久免费观看| 色乱码一区二区三区网站| 亚洲 欧洲 日韩| 国内精品99| 欧美牲交a欧美牲交| 老**午夜毛片一区二区三区| 日本特黄a级片| 国产一区二区不卡老阿姨| 中文字幕永久免费| 91免费观看视频| 少妇av片在线观看| 中文字幕一区二区三区不卡在线| 欧美交换国产一区内射| 婷婷综合久久一区二区三区| 自拍偷拍18p| 欧美精品1区2区| 亚洲精品一区二区三区不卡| 日韩电视剧免费观看网站| 国产视频第一页在线观看| 久久精品视频99| 91禁在线看| 国产精品吴梦梦| 精品成人自拍视频| 色就是色欧美| 国产精品多人| 北条麻妃视频在线| 国产精品一二一区| 30一40一50老女人毛片| 最新中文字幕一区二区三区| 国产精品第108页| 欧美日韩久久久一区| 黄色美女一级片| 在线国产精品视频| 欧美videosex性欧美黑吊| 日本视频久久久| 国产中文欧美日韩在线| 久久大片网站| 日本一区二区免费高清| 草b视频在线观看| 青娱乐精品视频在线| 欧美精品久久久久a| chinese国产精品| 欧美一级夜夜爽| 日韩电影免费| 超碰97人人做人人爱少妇| 成人性教育av免费网址| 91福利入口| 国产一区二区三区网| 成人免费性视频| 久久激情五月婷婷| 久久人人爽人人爽人人片| 亚洲黄网站在线观看| 午夜视频网站在线观看| 亚洲爱爱爱爱爱| 国产精品久久麻豆| 日本久久久久久久久| 国产成人一二片| 中文字幕日韩精品久久| 视频一区二区中文字幕| 国产美女视频免费观看下载软件| 亚洲天堂a在线| 中文字幕在线播放不卡| 亚洲日韩中文字幕在线播放| 678在线观看视频| 亚洲伊人一本大道中文字幕| 成人看的视频| wwwwxxxx日韩| 久久综合久久综合久久| 国产一级在线免费观看| 日韩视频永久免费| 国产一二区在线观看| 国产精品一区久久| 国产中文精品久高清在线不| 欧美成人一区二区在线观看| 国v精品久久久网| 男女免费视频网站| 日韩一区二区影院| 搞黄网站在线观看| 亚洲在线www| 婷婷久久国产对白刺激五月99| www.日日操| 久久精品夜夜夜夜久久| 免费av网站在线| 国产视频精品一区二区三区| gay欧美网站| 欧美午夜精品久久久久免费视| 六月天综合网| 国产精品久久久久无码av色戒| 日韩欧美在线观看| 国产在线视频福利| 国产精品美女久久久久av超清| 欧洲激情综合| 色戒在线免费观看| 亚洲特级片在线| www.国产黄色| 国模精品一区二区三区色天香| 嗯用力啊快一点好舒服小柔久久| 久久免费视频2| 国产剧情av麻豆香蕉精品| 欧美黑人精品一区二区不卡| 精品国产一区二区三区忘忧草 | 日韩av手机在线看| 国产不卡一二三区| 国产精品入口免费软件| 国产精品福利影院| 精品国产va久久久久久久| 久久久久国产一区二区三区| 美女av一区| 亚洲性生活网站| 综合激情成人伊人| 亚洲精品第五页| 欧美在线欧美在线| 清纯唯美日韩| 黑人无套内谢中国美女| 亚洲成a人在线观看| 男人av在线| 国产日韩av高清| 欧美精品一区二区三区久久久竹菊| 国产亚洲精品成人a| 色综合久久久网| 国产在线1区| 蜜桃av久久久亚洲精品| 久88久久88久久久| 日本熟妇一区二区| 亚洲午夜精品久久久久久性色 | av女在线播放| 热re99久久精品国99热蜜月| 激情深爱一区二区| 日产亚洲一区二区三区| 伊人久久久久久久久久| 久久伊人影院| 日韩av资源在线| 亚洲人123区| 日本一二三区在线视频| 成人福利视频在线观看| 国产午夜久久| 欧美激情精品久久久久久免费 | av网站网址在线观看| 国产视频不卡| 久久狠狠亚洲综合| 国产特黄大片aaaa毛片| 日韩视频免费看| 午夜先锋成人动漫在线| 国产美女视频免费看|