iOS多控制器实现带滑动动画第1/2页
程序员文章站
2023-12-12 13:16:16
本文实例为大家分享了ios多控制器实现带滑动动画的具体代码,供大家参考,具体内容如下
主控制器 ,管理控制器 .h文件
//宏
#define kscreen...
本文实例为大家分享了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 12下一页阅读全文 您可能感兴趣的文章:ios使用pageviewcontroller实现多视图滑动切换ios左右滑动标签页导航的设计ios仿今日头条滑动导航栏ios滑动解锁、滑动获取验证码效果的实现代码ios scrollview嵌套tableview同向滑动的示例微信浏览器弹出框滑动时页面跟着滑动的实现代码(兼容android和ios端)ios开发中禁止navigationcontroller的向右滑动返回ios开发向右滑动返回前一个页面功能(demo)ios实现双向滑动条效果uipageviewcontroller实现的左右滑动界面
相关文章
推荐阅读
最新评论