国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS多控制器實現帶滑動動畫

2019-10-21 18:40:52
字體:
來源:轉載
供稿:網友

本文實例為大家分享了iOS多控制器實現帶滑動動畫的具體代碼,供大家參考,具體內容如下

主控制器 ,管理控制器 .h文件

//宏#define kScreenWidth [UIScreen mainScreen].bounds.size.width#define kScreenHeight [UIScreen mainScreen].bounds.size.height#import "MYMainViewController.h"#import "MYFirstViewController.h"#import "MYSecondViewController.h"#import "MYThirdViewController.h"@interface MYMainViewController ()<UIScrollViewDelegate>//控制器名@property (nonatomic, strong) NSArray *VcNames;//選擇欄@property(nonatomic, strong) UIView *clickBar;//底部容器scrollView@property (strong, nonatomic) UIScrollView *containerScrollerView;@end

. m 文件 

底部scrollView , 用于滑動

@implementation MYMainViewController- (UIScrollView *)containerScrollerView{  if (!_containerScrollerView) {    _containerScrollerView = [[UIScrollView alloc]init];    _containerScrollerView.pagingEnabled = YES;    _containerScrollerView.showsVerticalScrollIndicator = NO;    _containerScrollerView.showsHorizontalScrollIndicator = NO;    _containerScrollerView.contentSize = CGSizeMake(kScreenWidth *self.VcNames.count,kScreenHeight);    _containerScrollerView.backgroundColor = [UIColor whiteColor];    _containerScrollerView.delegate = self;  }  return _containerScrollerView;}

初始化頂部選擇欄

//三個子控制器- (NSArray *)VcNames{  if (!_VcNames) {    _VcNames = @[@"控制器一",@"控制器二",@"控制器三"];  }  return _VcNames;}//點擊選擇欄- (UIView *)clickBar{  if (!_clickBar) {    _clickBar = [[UIView alloc]init];    _clickBar.backgroundColor = [UIColor lightGrayColor];    CGFloat width = kScreenWidth / 3;    CGFloat height = 44;    //初始化按鈕    for (NSInteger index = 0; index < 3; index++) {      UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];      [button setTitle:self.VcNames[index] forState:UIControlStateNormal];      [button setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];      button.frame = (CGRect){width *index,0,width,height};      [button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];      //綁定tag值      button.tag = index;      [_clickBar addSubview:button];    }  }  return _clickBar;}

viewDidLoad

- (void)viewDidLoad {  [super viewDidLoad];  self.edgesForExtendedLayout = 0;  //初始化選擇欄  [self initClickBar];  //初始化底部scrollView容器  [self initScrollViewContainer];  //初始化子控制器  [self addChildControllers];}

添加子控制器 , 初始化UI

//按鈕選擇欄- (void)initClickBar{  [self.view addSubview:self.clickBar];  self.clickBar.frame = (CGRect){0,0,[UIScreen mainScreen].bounds.size.width,44};}//初始化滑動容器- (void)initScrollViewContainer{  [self.view addSubview:self.containerScrollerView];  self.containerScrollerView.frame = CGRectMake(0,44,kScreenWidth, kScreenHeight );}//添加子控制器- (void)addChildControllers{  //為了方便直觀 , 在此處設置背景色 (實際開發中,不能在這里設置 , 原因是這里只要調用到了控制器的view屬性 , 該控制器將會執行viewDidLoad方法 , 相當于直接一開始就將三個控制器的所有UI和網絡請求全加載完了 , 負荷會相當重)  MYFirstViewController *firstVc = [[MYFirstViewController alloc]init];  firstVc.view.backgroundColor = [UIColor redColor];  [self addChildViewController:firstVc];  MYSecondViewController *secondVc = [[MYSecondViewController alloc]init];  secondVc.view.backgroundColor = [UIColor blueColor];  [self addChildViewController:secondVc];  MYThirdViewController *thirdVc = [[MYThirdViewController alloc]init];  thirdVc.view.backgroundColor = [UIColor yellowColor];  [self addChildViewController:thirdVc];  //默認展示第一個子控制器  [self scrollViewDidEndDecelerating:self.containerScrollerView];}

按鈕點擊事件實現 , 代理方法實現

//選擇欄按鈕點擊事件- (void)buttonClick:(UIButton *)button{  [self.containerScrollerView setContentOffset:CGPointMake(button.tag *kScreenWidth, 0) animated:YES];}//滑動減速時調用- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{  //獲取contentOffset  CGPoint currentOffset = scrollView.contentOffset;  NSInteger page = currentOffset.x / kScreenWidth;  //取出對應控制器  UIViewController *viewController = self.childViewControllers;  //添加到scrollView容器  //  if (![viewController isViewLoaded]) {  [self.containerScrollerView addSubview:viewController.view];  viewController.view.frame = CGRectMake(page *kScreenWidth, 0,kScreenWidth, kScreenHeight);  //  }}

目錄

iOS,多控制器,滑動動畫

效果

iOS,多控制器,滑動動畫

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乌苏市| 罗定市| 石屏县| 双峰县| 明溪县| 正阳县| 饶阳县| 金寨县| 厦门市| 土默特左旗| 右玉县| 咸丰县| 汪清县| 宁南县| 民和| 汝城县| 峨眉山市| 黄浦区| 永福县| 咸宁市| 泗水县| 句容市| 阿合奇县| 泾源县| 茂名市| 花垣县| 铁岭县| 寿宁县| 方山县| 佛学| 康定县| 许昌县| 庄河市| 阆中市| 徐汇区| 遂平县| 黄梅县| 庆云县| 白银市| 孝感市| 双峰县|