精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日本成人免费视频| 中文字幕乱码亚洲精品一区| 疯狂蹂躏欧美一区二区精品| 日韩在线小视频| 久久精品xxx| 国产美女自慰在线观看| 国产不卡一区| 欧美日韩中文字幕| 国产精品嫩草在线观看| 国产探花在线播放| 99热这里有精品| 中文字幕欧美激情一区| 亚洲最大的av网站| 麻豆视频在线免费看| 色成人综合网| 国产精品久久毛片a| 国产精品爱啪在线线免费观看| 日本护士做爰视频| 国产亚洲成av人片在线观看| 色婷婷色综合| 在线看国产日韩| 日本视频一区二区不卡| 亚洲av中文无码乱人伦在线视色| 国产调教精品| 一区二区三区在线视频播放| 亚洲综合第一页| av中文在线播放| 亚洲国产国产| 色婷婷久久久综合中文字幕| 欧美日韩在线一区二区三区| 手机在线看片1024| 国产真实久久| 日韩精品免费视频| 尤物av无码色av无码| 秋霞av鲁丝片一区二区| 亚洲深夜av| 在线a欧美视频| 欧美美女一级片| 2020国产在线视频| 成人黄色av网站在线| 7777精品视频| 免费黄色片网站| 老司机aⅴ在线精品导航| 精品女厕一区二区三区| 日韩a级黄色片| 污污网站免费在线观看| 久久在线91| 日韩在线观看免费av| 亚洲欧美日韩网站| jizzjizz中国精品麻豆| 久久综合九色综合97婷婷女人| 国产97在线观看| 毛片久久久久久| 最新精品在线| 91久久精品国产91性色tv| 一区二区精品免费视频| 亚洲黄色在线观看视频| 男女av一区三区二区色多| 日韩中文字幕视频| 刘亦菲国产毛片bd| 99精品在线| 亚洲国产成人在线视频| 色国产在线视频| 综合久久2o19| 一区二区三区日本| 日韩国产小视频| 二人午夜免费观看在线视频| 国产老女人精品毛片久久| 欧美亚洲成人精品| 欧美国产日韩在线观看成人| 伊人情人综合网| 亚洲天堂av在线播放| 亚洲热在线视频| 理论片午夜视频在线观看| 国产精品婷婷午夜在线观看| 亚洲国产精品久久久久婷婷老年| 免费看黄网站在线观看| 99re热这里只有精品视频| 亚洲aa在线观看| 亚洲av无码国产综合专区| 成人福利电影精品一区二区在线观看 | 黑人巨大精品欧美一区二区一视频 | 色哟哟一区二区在线观看 | 激情成人综合网| 97在线视频免费看| 99热在线观看精品| 最新精品国偷自产在线| 欧美不卡一区二区| 黄色一级片免费的| 91精品久久久久久综合五月天| 亚洲高清福利视频| 青娱乐国产视频| 欧美 亚欧 日韩视频在线 | 欧美一卡二卡| 国产精品久久三| 可以在线看黄的网站| aiai在线| 久久精品夜色噜噜亚洲a∨| 国产在线资源一区| 国产黄色免费大片| 国模大尺度一区二区三区| 丁香五月网久久综合| 国产熟女精品视频| 91在线观看污| 经典三级在线视频| 久久综合网导航| 国产精品美女久久久久aⅴ| 国产精品视频网站在线观看| 精品123区| 欧美性猛交xxxxxxxx| 日韩中文字幕组| 成人欧美大片| 色老综合老女人久久久| 日韩欧美色视频| 国产麻豆一区二区三区精品视频| 欧美裸身视频免费观看| 外国一级黄色片| 狂野欧美性猛交xxxx巴西| 成人中文字幕+乱码+中文字幕| 亚洲熟女乱色一区二区三区久久久| 丝袜亚洲另类丝袜在线| 爱情岛论坛亚洲入口| 欧美性受xxxx狂喷水| 中文字幕的久久| 18禁男女爽爽爽午夜网站免费| 亚洲十八**毛片| 色婷婷狠狠综合| 在线观看成人动漫| 婷婷精品在线| 伊人男人综合视频网| 日韩精品无码一区二区| 美女精品在线观看| av一本久道久久波多野结衣| 巨大荫蒂视频欧美大片| 欧美三日本三级三级在线播放| 男人的天堂最新网址| 狠狠色狠狠色综合婷婷tag| 亚洲91av视频| 日本激情一区二区| 午夜精品一区二区三区电影天堂 | 欧美午夜精品久久久久久蜜| 大菠萝精品导航| 欧美精品一区二区高清在线观看| 自拍视频一区二区| 国产一区美女| 国产精品一区二区你懂得| 青草在线视频| 亚洲国产一区二区三区四区| 最新中文字幕av| 日本亚洲天堂网| ts人妖另类在线| 伊人222成人综合网| 欧美一区二区在线免费播放| 你懂得在线视频| 亚洲人www| 国产精品视频一区二区高潮| 午夜久久久久久噜噜噜噜| 2欧美一区二区三区在线观看视频| 日韩精品一线二线三线| 色呦呦在线资源| 91极品视觉盛宴| 久久丫精品忘忧草西安产品| 日韩不卡一区二区| 99国产视频| 青草青在线视频| 日韩大陆欧美高清视频区| 伊人中文字幕在线观看| 中文字幕电影一区| 日本r级电影在线观看| 欧美视频在线观看| 国产精品一区二区三| 欧美一区,二区| 午夜精品久久久久久久久久久| 在线免费观看污视频| 日韩精品一二三区| 一级黄色免费在线观看| 欧美日韩电影免费看| 欧美成人精品1314www| 日本少妇在线观看| 久久久国际精品| 国产一区二区在线观看免费视频| 天天躁日日躁狠狠躁欧美巨大小说 | 欧美日韩大片在线观看| 日韩高清一级片| 一区二区三区四区不卡| av自拍一区| 久久久国产视频| 亚洲第一区av| 久久精品在这里| 欧美日韩精品区别| 99亚洲精品| 国产精华一区二区三区| 中文字幕21页在线看| 日韩中文字在线| 欧美视频xxx| 欧美日韩精品欧美日韩精品一 | 天堂在线资源网| 亚洲女爱视频在线| 在线观看国产福利| 一本色道久久综合| 伊人久久大香线蕉成人综合网| 性欧美1819sex性高清| 久久香蕉频线观| 国产精品亚洲lv粉色| 日本一区二区三区高清不卡| 国产裸体舞一区二区三区| 天天操夜夜操国产精品| 久久国产精品-国产精品| 久久精品91久久久久久再现| 日本久久一级片| 91精品国产综合久久婷婷香蕉 | 在线国产情侣| 日韩av在线网页| 精品久久国产视频| 欧美午夜精品免费| 九九热在线免费观看| 一区二区三区毛片| 国产精品熟女一区二区不卡| 久久久国产亚洲精品| 欧美一级视频在线播放| 久久精品青草| 成人av免费在线看| 粉嫩91精品久久久久久久99蜜桃| 自拍偷拍免费精品| 一级片aaaa| 成人欧美一区二区三区白人 | 日本熟女毛茸茸| 一区二区三区四区乱视频| 天天干天天操天天拍| 久久91精品久久久久久秒播| 91免费视频黄| 日韩av专区| 日本视频一区在线观看| 亚洲三级网址| 激情小说网站亚洲综合网| 精品国产免费人成网站| 午夜精品久久久久久久99热浪潮| 在线免费观看的av| 久久视频中文字幕| 黄色的网站在线观看| 精品国产视频在线| 午夜视频在线免费观看| 日韩欧美一区二区三区在线| 国产性xxxx高清| 国产日产欧美一区二区视频| 91看片破解版| 久久99精品久久只有精品| 美女在线视频一区二区| 毛片基地黄久久久久久天堂| 久草免费福利在线| 激情久久婷婷| 午夜精品亚洲一区二区三区嫩草| 24小时成人在线视频| 国产精品美女久久久久久免费 | 99日韩精品| 黄色一级片播放| 国产亚洲福利| 国产精品wwwww| 免费人成黄页网站在线一区二区| 成人午夜免费剧场| 欧美精品成人| 777av视频| 久久久久久久久国产一区| 成年人黄色在线观看| 欧美激情一级片一区二区| 亚洲精品无码国产| 国产模特精品视频久久久久| 久久精品视频91| 精品999网站| 精品国产免费av| 国产精品第十页| 色综合久久久久无码专区| 免费在线亚洲欧美| 欧美这里只有精品| aa级大片欧美三级| 欧美日韩在线免费播放| 精品一区二区日韩| 国产一卡二卡三卡四卡| 国产亚洲精品bt天堂精选| 日本爱爱小视频| 亚洲一级二级三级| 精品国产欧美日韩不卡在线观看| 亚洲综合免费观看高清完整版 | 美国美女黄色片| 亚洲精品v日韩精品| 中文字幕精品三级久久久| 一级特黄大欧美久久久| 青青草成人av| 欧美精品久久久久久久多人混战 | 国产一区二区免费电影| 精品一区二区三| 国产在线欧美日韩| 大胆日韩av| 日韩影院一区| 黄色精品网站| 性欧美videossex精品| 老妇喷水一区二区三区| 天天操夜夜操很很操| 91啦中文在线观看| 国产高潮流白浆| 91黄色小视频| 欧美一级特黄aaaaaa| 色哟哟入口国产精品| 川上优av中文字幕一区二区| 成人a免费视频| 精品国产第一国产综合精品| 91美女高潮出水| 亚洲色图美女| 亚洲五码在线观看视频| 日韩精品1区2区3区| 国产人妻黑人一区二区三区| 成a人片亚洲日本久久| 亚洲精品国产精品乱码在线观看| 国产精品人成在线观看免费| 日本学生初尝黑人巨免费视频| 欧美精品丝袜久久久中文字幕| 天天综合天天综合| 大胆人体色综合| 免费成人高清在线视频| 成人在线中文字幕| jizzjizz欧美69巨大| 国产黄页在线观看| 国产精品一区二区三区乱码| 影音先锋男人看片资源| 欧美性猛交xxxx免费看久久久| 亚洲精品一区二区三区新线路| www国产精品视频| 中韩乱幕日产无线码一区| 免费h精品视频在线播放| jvid福利在线一区二区| 欧美日韩亚洲第一| 成a人片国产精品| 日韩污视频在线观看| 欧美电影精品一区二区| 18加网站在线| 亚洲在线免费观看| 婷婷中文字幕一区| 成熟的女同志hd| 亚洲一区二区在线免费观看视频| 国产精品久久久久精| 色噜噜狠狠狠综合曰曰曰88av| 日本免费久久| 日韩精品久久久毛片一区二区| 香蕉久久a毛片| 欧美 日本 国产| 99re66热这里只有精品3直播 | 一区二区精品| 国产精品免费观看高清| 成人在线免费小视频| 一级在线免费视频| 亚洲国产成人午夜在线一区| 在线观看你懂的网站| 一区二区三区回区在观看免费视频| 成人啊v在线| 成人在线免费观看视视频| 久久精品99久久无色码中文字幕| 亚洲国产精品一区在线观看不卡 | 男人插女人下面免费视频| 国产一区日韩二区欧美三区| 一区二区视频观看| 欧美日韩在线第一页| 日韩电影免费| 欧美精品亚州精品| 欧美日韩精品免费观看视欧美高清免费大片 | 欧美成在线视频| 国产成人福利av| 国产日产欧美视频| 亚洲国产成人私人影院tom| 97视频免费在线| 欧美黄色片免费观看| 成人精品国产| 法国空姐在线观看免费| 国产成人h网站| www中文在线| 欧美一级电影网站| av资源种子在线观看| 91av视频在线观看| 欧美理论视频| 国产精品久久久久久9999| 亚洲在线观看免费| 青青草在线播放| 国产在线视频欧美| 欧美午夜精品一区二区三区电影| 天天干天天操天天做| 一区二区三区不卡视频在线观看| 天堂а√在线8种子蜜桃视频 | 亚洲成av人片在线观看香蕉| 成人免费看视频网站| 中文字幕一区二区三区在线乱码| 国产精品1区2区3区在线观看| 久久免费手机视频| 日韩欧美国产1| 666av成人影院在线观看| 国产手机视频在线观看| 91丨九色丨黑人外教| 91尤物国产福利在线观看| 久久久伊人日本| 99久久香蕉| 亚洲欧美久久久久| 五月婷婷色综合|