博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iPad开发--QQ空间,处理横竖屏布局,实现子控件中的代理
阅读量:6720 次
发布时间:2019-06-25

本文共 2997 字,大约阅读时间需要 9 分钟。

一.主界面横竖屏效果图

二.主界面加载,

  • 初始化Dock(红色框的控件),判断程序启动时的屏幕方向.调用自己- (void)transitionToLandScape:(BOOL)isLandScape;方法,通知子控件屏幕方向改变,将此事件一直传递下去

  • 程序运行过程中屏幕方向改变会调用- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator;(View将要过度到的尺寸) 方向改变后,同样要通知Dock,执行Dock的- (void)transitionToLandScape:(BOOL)isLandScape;屏幕方向改变,子控件同样要修改尺寸

三.Dock的初始化

  • Dock中的- (void)transitionToLandScape:(BOOL)isLandScape;方法中不仅要根据屏幕方向判断自己的尺寸,还要通知自己的子控件屏幕方向改变
  • 构造方法内初始化子控件                                                                          

四.Dock子控件DockBottomView以及用block实现内部按钮的点击

  • DockBottomView内部有三个按钮组成,竖屏时,纵向排列,横屏时横向排列构造方法中添加子控件,

    - (void)transitionToLandScape:(BOOL)isLandScape方法中根据屏幕方向布局子控件

  • block需要传递一个参数(被点击的按钮),按钮的类型(自己定义的枚举),按钮中的tag绑定了类型,外界通过判断按钮的类型,决定下一步的代码
  • 外界通过判断按钮类型执行的代码
    1 // block实现底部按钮的点击 2 - (void)blockWithBottomClick 3 { 4     self.dock.bottomView.itemBlock = ^(UIButton *button){ 5          6         switch (button.tag) { 7             case ChaosDockBottomItemTypeMood: 8             { 9                 ChaosMoodViewController *moodVC = [[ChaosMoodViewController alloc] init];10                 11                 UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:moodVC];12                 nav.modalPresentationStyle = UIModalPresentationPageSheet;13                 14                 nav.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;15                 16                 [self presentViewController:nav animated:YES completion:nil];17             }18                 break;19             case ChaosDockBottomItemTypePhoto:20             {21                 ChaosMoodViewController *moodVC = [[ChaosMoodViewController alloc] init];22                 23                 UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:moodVC];24                 nav.modalPresentationStyle = UIModalPresentationPageSheet;25                 26                 nav.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;27                 28                 [self presentViewController:nav animated:YES completion:nil];            }29                 break;30             case ChaosDockBottomItemTypeBlog:31             {32                 ChaosMoodViewController *moodVC = [[ChaosMoodViewController alloc] init];33                 34                 UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:moodVC];35                 nav.modalPresentationStyle = UIModalPresentationPageSheet;36                 37                 nav.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;38                 39                 [self presentViewController:nav animated:YES completion:nil];40             }41                 break;42         }43     };44 }
    View Code

五.Dock中子控件ChaosTabBar,以及代理方法的实现

  • 添加子控件,子控件为自定义按钮,按钮内部实现下面两个方法可以实现内部image和title的自定义布局
  • 代理的设计,内部需要将上次选中按钮的index和本次点击的按钮的index传递出去,方便外界切换对应的控制器或者view
  • 外界代理的实现                                                                        

六.Dock中的IconButton(头像),就一按钮,直接在外面给按钮添加点击事件                    

转载于:https://www.cnblogs.com/gchlcc/p/5563513.html

你可能感兴趣的文章
12 款优秀的 JavaScript MVC 框架评估(转)
查看>>
Python 学习从廖雪峰 Python教程开始
查看>>
Java 多线程原理
查看>>
JAVA学习的几个关键点
查看>>
复利单利计算的功能解释
查看>>
解决方案
查看>>
【概率dp】【滚动数组】CDOJ1652 都市大飙车
查看>>
Spring(2):【转载】认识 Spring 框架、Spring AOP
查看>>
Pyrhon代码的中文问题
查看>>
【Atcoder】AGC 016 C - +/- Rectangle
查看>>
WEB下面路径的问题
查看>>
2017"百度之星"程序设计大赛 - 初赛(A)
查看>>
android开发之画图版
查看>>
数组队列
查看>>
程序员成长纪——首章
查看>>
在Mac OS X上用自己编译出的CoreCLR运行.NET程序
查看>>
CentOS服务器配置SSH免密连接
查看>>
软考:马老师要求
查看>>
WPF 按名称查找控件
查看>>
Activity活动
查看>>