iPad开发--QQ空间,处理横竖屏布局,实现子控件中的代理

一.主界面横竖屏效果图

二.主界面加载,

  • 初始化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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458412.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ Vector 汇总

C vector erase函数最近使用了顺序容器的删除元素操作&#xff0c;特此记录下该函数的注意事项。 在Cprimer中对c.erase(p) 这样解释的&#xff1a;c.erase(p) 删除迭代器p所指向的元素&#xff0c;返回一个指向被删元素之后元素的迭代器&#xff0c;若p指向尾元素&#xff…

vNext之旅(2):net451、dotnet5.4、dnx451、dnxcore50都是什么鬼

继上次”vNext之旅&#xff08;1&#xff09;&#xff1a;从概念和基础开始”之后再次学习vNext重新遇到了弄不懂的事情&#xff0c;花了一些时间学习&#xff0c;今天来分享一下&#xff0c;为后人节省些时间。起因 在用vNext造轮子——框架的时候引入“Microsoft.Dnx.Runtime…

C++中模板使用详解

转自&#xff1a;http://www.360doc.com/content/09/0403/17/799_3011262.shtml 1. 模板的概念。 我们已经学过重载(Overloading)&#xff0c;对重载函数而言,C的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如&#xff0c;为求两个数的最大值&#xf…

腾讯2016春招安全岗笔试题解析

腾讯2016春招安全岗笔试题解析 昨天&#xff08;4月2日&#xff09;晚上7:00到9:00做了腾讯春招安全岗的笔试题。下面解析一下&#xff1a; 题目解析 1 在生成随机数前用当前时间设置随机数种子应该是安全的。如果程序用固定的数产生随机数&#xff0c;其结果也是固定的。如果用…

网络请求数据解析时,判断数据是否为空

//判断是否为空 (BOOL)IsStringEmptyOrNull:(NSString *)str { if (!str) { // null object return true; }else if (str nil){ return true; }else { if ([str isKindOfClass:[NSNull class]]) { return true; …

VS项目属性的一些配置项的总结(持续增加。。。)

首先&#xff0c;解决方案和项目文件夹包含关系(c项目)&#xff1a; VS解决方案和各个项目文件夹以及解决方案和各个项目对应的配置文件包含关系&#xff1a;假设新建一个项目ssyy&#xff0c;解决方案起名fangan&#xff0c;注意解决方案包括项目&#xff0c;此时生成的最外层…

shell编程中date用法(转)

原文地址:http://blog.sina.com.cn/s/blog_61c006ea0100mgxe.html 1、date --help %% 输出%符号 a literal % %a 当前域的星期缩写 locale’s abbreviated weekday name (Sun..Sat) %A 当前域的星期全写 locale’s full weekday name, variable length (Sunday..Saturday) %b 当…

linux下搭建FTP服务器

LINUX FTP简单配置 FTP配置1、#vi /etc/vsftp/vsftpd.conf #主要配置几个关键的就可以 anonymous_enableNO #拒绝匿名访问 chroot_local_userYES #锁定用户目录&#xff0c…

微信正则表达式 iOS

#pragma mark - 微信号的正则表达式 微信账号仅支持6-20个字母、数字、下划线或减号&#xff0c;以字母开头 (BOOL)isWxNumber:(NSString *)WXNum{ NSString *passWordRegex "^[a-zA-Z][a-zA-Z0-9_-]{5,19}$"; NSPredicate *passWordPredicate [NSPredica…

子元素增加margin-top会增加给父元素的问题

假设我们有如下代码 <div id"father" style"height:400px;width:400px;background:#e4393c;">     <div id"child" style"background:green;height:100px;width:100px;margin-top:40px;"></div>   </div&g…

Python 关键字

from&#xff1a;https://blog.csdn.net/liang19890820/article/details/68488392简述 关键字是预先保留的标识符&#xff0c;每个关键字都有特殊的含义。编程语言众多&#xff0c;但每种语言都有相应的关键字&#xff0c;Python 也不例外&#xff0c;它自带了一个 keyword 模块…

Zend Studio使用教程之升级Zend Studio(1/3)

2019独角兽企业重金招聘Python工程师标准>>> Zend Studio是新一代的专业级智能PHP IDE&#xff0c;它旨在帮助开发人员提高工作效率&#xff0c;创造出高品质的PHP应用程序&#xff01;它包含了PHP开发所必须的部件&#xff0c;通过一整套的编辑、调试、分析、优化和…

身份证正则表达式

#pragma mark - 身份证的正则表达式 (BOOL)checkUserID:(NSString *)userID { //长度不为18的都排除掉 if (userID.length!18) { return NO; } //校验格式 NSString *regex2 "^(^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d…

java中可重入锁的学习总结

2019独角兽企业重金招聘Python工程师标准>>> 经常看到网上的人说&#xff0c;可重入锁一词&#xff0c;但是总是没怎么了解&#xff0c;到底什么是可重入锁&#xff0c;一直是一个模糊的概念&#xff0c;下面来大致总结一下。 可重入锁&#xff1a;指的是同一个线程…

Oracle DB优化

http://www.jb51.net/article/77876.htm http://www.jb51.net/article/56881.htm http://danni505.blog.51cto.com/15547/1163711/ http://blog.csdn.net/giianhui/article/details/8172786转载于:https://www.cnblogs.com/diyunpeng/p/5132392.html

设置View单个圆角

#pragma mark - 设置View单个圆角 (void)addCornerWithView:(UIView *)aView type:(UIRectCorner)aCorners size:(CGSize)aSize { // 根据矩形画带圆角的曲线 UIBezierPath *maskPath [UIBezierPath bezierPathWithRoundedRect:aView.bounds byRoundingCorners:aCorn…

Python 数据类型

简述Python 中的每个值都有一个数据类型。在 Python 编程中&#xff0c;一切&#xff08;万物&#xff09;皆对象&#xff0c;数据类型实际上是类&#xff0c;变量是这些类的实例&#xff08;对象&#xff09;。简述数据类型Number数字String字符串List列表Tuple元组Set集合Dic…

基于用户投票的排名算法(一):Delicious和Hacker News

互联网的出现&#xff0c;意味着"信息大爆炸"。 用户担心的&#xff0c;不再是信息太少&#xff0c;而是信息太多。如何从大量信息之中&#xff0c;快速有效地找出最重要的内容&#xff0c;成了互联网的一大核心问题。 各种各样的排名算法&#xff0c;是目前过滤信息…

iOS 修改工程名

一两个月之前&#xff0c;公司要求将现在的项目&#xff08;发货端和接单端在一个项目里&#xff09;&#xff0c;拆分成两个项目分别是接单端项目和发货端项目&#xff0c;原有的项目还不能下架。这种情况就要考虑苹果审核查代码的重复率的问题了。老板的要求除了改变项目的主…

Windows 下 Python 环境搭建

简述Python 是跨平台的&#xff0c;可以运行在 Windows、Mac OS X 和各种 Linux/Unix 系统上。在学习 Python 之前&#xff0c;首先要搭建 Python 环境。完成后&#xff0c;会得到 Python 解释器&#xff08;负责运行 Python 程序的&#xff09;&#xff0c;一个命令行交互环境…