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;其结果也是固定的。如果用…

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

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

子元素增加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…

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

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

java中可重入锁的学习总结

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

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

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

Windows 下 Python 环境搭建

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

面试中关于Java你所需知道的的一切

本篇文章会对面试中常遇到的Java技术点进行全面深入的总结&#xff0c;帮助我们在面试中更加得心应手&#xff0c;不参加面试的同学也能够借此机会梳理一下自己的知识体系&#xff0c;进行查漏补缺。 1. Java中的原始数据类型都有哪些&#xff0c;它们的大小及对应的封装类是什…

利用BBRSACryptor实现iOS端的RSA加解密

背景 RSA这种非对称加密被广泛的运用于网络数据的传输&#xff0c;但其在iOS上很难直接实现&#xff0c;BBRSACryptor框架通过移植openssl实现了iOS端的RSA&#xff0c;本文将介绍如何使用BBRSACryptor生成证书&#xff0c;加载公钥&#xff0c;以及后端如何用php读取证书&…

Linux(Fedora21)安装google chrome浏览器

2019独角兽企业重金招聘Python工程师标准>>> Linux(Fedora21)安装Google Chrome浏览器 qianghaoaho(孤狼) 1.添加google chrome的源&#xff1a; cd /etc/yum.repos.d/ vim chrome.repo添加如下内容&#xff1a; [google64] …

R-大数据分析挖掘(5-R基础回顾)

&#xff08;一&#xff09;R函数 R是一种解析型语言&#xff0c;输入后可直接获取结果 函数&#xff08;输入参数&#xff0c;参数&#xff09; R的函数分为“高级”和“低级函数”     • 高级函数可调用低级函数     • 高级函数称为泛型函数 • 函数名 <-‐…

oracle 中的trunc()函数及加一个月,一天,一小时,一分钟,一秒钟方法

返回处理后的数据&#xff0c;不同于round()&#xff08;对数值进行四舍五入处理&#xff09;&#xff0c;该函数不对指定小数前或后的数值部分进行舍入处理。 语法&#xff1a;trunc(number[,decimals]) 其中&#xff0c;number为待做处理的数值&#xff0c;decimals为需要保留…

直接拿来用!最火的Android开源项目(完结篇)

直接拿来用&#xff01;最火的Android开源项目&#xff08;完结篇&#xff09; 2014-01-06 19:59 4785人阅读 评论(1) 收藏 举报 分类&#xff1a;android 高手进阶教程&#xff08;100&#xff09; 摘要&#xff1a;截至目前&#xff0c;在GitHub“最受欢迎的开源项目”系…

将centos7打造成桌面系统

前言 以下所有操作默认在root权限下执行&#xff0c;桌面环境是kde&#xff0c;使用gnome的也可以参考一下。我收集的以下要用到的一些安装包&#xff0c;360网盘http://yunpan.cn/csMhBAp92vTgN 提取码 92e2以下要用的安装软件语法&#xff1a;通过软件源在线安装&#xff1a;…

(八)企业部分之nginx+tomcat+memcached负载均衡集群搭建

【server1】vim /usr/local/lnmp/tomcat/conf/context.xml<Context>......<Manager className"de.javakaffee.web.msm.MemcachedBackupSessionManager"memcachedNodes"n1:172.25.45.1:11211,n2:172.25.45.2:11211"failoverNodes"n1"req…

C++ 虚函数经典深入解析

from&#xff1a;https://blog.csdn.net/gggg_ggg/article/details/45915505C中的虚函数的作用主要是实现了多态的机制。 关于多态&#xff0c;简而言之就是用父类型别的指针指向其子类的实例&#xff0c;然后通过父类的指针调用实际子类的成员函数。 这种技术可以让父类的指针…

理解C++中拷贝构造函数

拷贝构造函数的功能是用一个已有的对象来初始化一个被创建的同样对象&#xff0c;是一种特殊的构造函数&#xff0c;具有一般构造函数的所有特性&#xff0c;当创建一个新对象的时候系统会自动调用它&#xff1b;其形参是本类对象的引用&#xff0c;它的特殊功能是将参数代表的…