iPad - 开发(Universal Applications)
一、iPad
1、判断是否在iPad上
BOOL iPad = ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad);
二、UISplitViewController 分割视图控制器
1、UISplitViewController 分割视图控制器(顶级视图,不能放在Nav或者其他视图中)
可以通过 if (self.splitViewController) 判断是否是分割视图中
@property (strong) UISplitViewController *splitViewController;
控制器分为两部分, 代表 Master, 就是指 Detail
@property (copy) NSArray *viewControllers;
比如说 UIViewController *detailVC = self.splitViewController.viewControllers[1]; 如果我们处在分割视图中,它会返回detail,否则它会返回nil,这个也可以用来判断是否在分割视图中
2、delegate 协议(需要在ViewDidLoad之前就定义好协议,可能是在awakeFromNib)
.主要用来控制master和detail何时出现
.比如
- (BOOL)splitViewController:(UISplitViewController *)sender shouldHideViewController:(UIViewController *)master inOrientation:(UIInterfaceOrientation)orientation
{
return NO; //从不隐藏左边的master
}
- (BOOL)splitViewController:(UISplitViewController *)sender shouldHideViewController:(UIViewController *)master inOrientation:(UIInterfaceOrientation)orientation
{
return UIInterfaceOrientationIsPortrait(orientation);//只在竖屏中隐藏master(对应的detail 的左上角会有一个按钮可以切换回去,但是如果没有实现委托协议的话就没有这个按钮)
}
- (void)splitViewController:(UISplitViewController *)sender willHideViewController:(UIViewController *)master withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popover
{
barButtonItem.title = master.title;
self.navigationItem.leftBarButton = barButtonItem;//相当于把返回master 的按钮设置为 UINavigationController的barButtonItem
}
3、master中的点击如何在detail中响应呢?
.通过action,通过prepareSegue一样
- (IBAction)doit
{
id detailViewController = self.splitViewController.viewControllers[];
[detailViewController setSomeProperty:...];
}
.segue :但是它会更新整个视图控制器,包括我们设置的上面提到的navigtionItem的按钮,都会重新设置,所以很一般不采用
三、Popovers弹窗控制器
(不属于UIViewController,是一个NSObject,主要控制另外一个视图控制器弹出到屏幕上)
1、获得要弹出的视图控制器
@property (nonatomic, strong) UIViewController *contentViewController; //通过先获得这个要弹出的视图控制器
2、创建一个Popovers 的 segue
(需要注意的是,你在prepaeForsegue中获得的segue,是一个UIStoryboardPopoverSegue )
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue isKindOfClass:[UIStoryboardPopoverSegue class]]) {
UIPopoverController *popoverController =
((UIStoryboardPopoverSegue *)segue).popoverController;
...
} }
3、点击Popovers之外的地方,一般是默认隐藏的,但是如果它是弹窗控制器中这个视图数组中的视图的话,并不会消失隐藏
@property (copy) NSArray *passthroughViews;
但是我们可以让它隐藏:
- (void)dismissPopoverAnimated:(BOOL)animated; - (void)popoverControllerDidDismissPopover:(UIPopoverController *)sender;
iPad - 开发(Universal Applications)的更多相关文章
- OC开发_Storyboard——iPad开发
iPad开发(Universal Applications) 一.iPad 1.判断是否在iPad上 BOOL iPad = ([[UIDevice currentDevice] userInterf ...
- iOS开发——高级篇——iPad开发、iPad开发中的modal
一.iPad简介 1.什么是iPad一款苹果公司于2010年发布的平板电脑定位介于苹果的智能手机iPhone和笔记本电脑产品之间跟iPhone一样,搭载的是iOS操作系统 2.iPhone和iPadi ...
- 初学iPad开发入门
iPad是一款苹果公司于2010年发布的平板电脑定位介于苹果的智能手机iPhone和笔记本电脑MacBook产品之间跟iPhone一样,搭载的是iOS操作系统 iPhone和iPad开发的区别 屏幕的 ...
- iOS开发UI篇—iPad开发中得modal介绍
iOS开发UI篇—iPad开发中得modal介绍 一.简单介绍 说明1: 在iPhone开发中,Modal是一种常见的切换控制器的方式 默认是从屏幕底部往上弹出,直到完全盖住后面的内容为止 说明2: ...
- 使用 Portable Class Library(可移植类库)开发 Universal Windows App
今天在这里跟大家聊聊关于 Windows Universal 应用夸平台的问题,首先Universal Windows App的定义相信大家已经有所了解了(如果你是一个刚刚接触 Universal A ...
- iPad开发(相对于iPhone开发时专有的API)
iPad开发 一.iPad开发简介 1.什么是iPad 一款苹果公司于2010年发布的平板电脑 定价介于苹果的智能手机iPhone和笔记本电脑产品之间 跟iPhone一样,搭载的是iOS操作系统 2. ...
- iPad开发中UIPopoverController的使用
什么是UIPopoverController 是iPad开发中常见的一种控制器 跟其他控制器不一样的是,它直接继承自NSObject,并非继承自UIViewController 它只占用部分屏幕空间来 ...
- (一〇八)iPad开发之横竖屏适配
在iPad开发中,横竖屏的视图常常是不同的,例如侧边栏Dock,在横屏时用于屏幕较宽,可以展示足够多的内容,每个按钮都可以展示出标题:而竖屏时Dock应该比较窄,只显示图标不现实按钮标题. iPad比 ...
- ipad开发小结
项目小结 :布局的时候最后要用CGRectDivi.. :控制器的生命周期---->(init-->(当self.view==nil调用 loadView viewdidload)--&g ...
- iOS - 初学iPad开发入门
iPad是一款苹果公司于2010年发布的平板电脑定位介于苹果的智能手机iPhone和笔记本电脑MacBook产品之间跟iPhone一样,搭载的是iOS操作系统 iPhone和iPad开发的区别 屏幕的 ...
随机推荐
- Java LinkedHashMap工作原理及实现
Java LinkedHashMap工作原理及实现 原文出处: Yikun 1. 概述 在理解了#7 介绍的HashMap后,我们来学习LinkedHashMap的工作原理及实现.首先还是类似的,我们 ...
- r绘图基本
R绘图命令分为三种类型: 高级绘图命令在图形设备上产生一个新的图区,它可能包括坐标轴,标签,标题等等. 低级画图命令会在一个已经存在的图上加上更多的图形元素,例如额外的点,线和标签. 交互式图形命令允 ...
- 第三百一十九节,Django框架,文件上传
第三百一十九节,Django框架,文件上传 1.自定义上传[推荐] 请求对象.FILES.get()获取上传文件的对象上传对象.name获取上传文件名称上传对象.chunks()获取上传数据包,字节码 ...
- windows下定时任务设置
Linux 系统可以通过crontab -e 设置定时任务,Windows系统没有crontab命令,但是Windows系统有跟crontab命令比较接近的命令: schtasks 命令. # 设置定 ...
- 将ORACLE数据库更改为归档模式;写出步骤
解答:具体步骤如下: 1),以exp方式在线备份数据库到指定位置: 2),观察当前数据库是以服务器参数文件(spfile)方式启动还是以参数文件(pfile)方式启动: SQL> show pa ...
- (转)深入解析SendMessage、PostMessage
转自:http://blog.csdn.net/xt_xiaotian/article/details/2778689 本文将使用C++语言,在MFC框架的配合下给出PostMessage.S ...
- MySQL无法远程连接解决方案
1.查看/etc/mysql/my.cnf配置文件是否只允许本地连接 注释配置:#bind-address = 127.0.0.1,重启MySQL Server 2.防火墙(我用的是iptables) ...
- atitit.javascript调用java in swt attilax 总结
atitit.javascript调用java in swt attilax 总结 1. BrowserFunction 简单介绍1 1.1. BrowserFunction 能够分为三类: 1 1. ...
- 2014Esri全球用户大会之影像和栅格
1.现在Esri已将影像作为GIS解决方案的一部分,其详细战略部署是如何的? 在过去的十年.Esri有规划的在ArcGIS平台(主要为Desktop和Server)中管理和开发影像和栅格功能.这包含影 ...
- C++编程 - tuple、any容器
C++编程 - tuple.any容器 flyfish 2014-10-29 一 tuple tuple是固定大小的容器,每一个元素类型能够不同 作用1 替换struct struct t1 { in ...