OC开发_Storyboard——iPad开发
iPad开发(Universal Applications)
一、iPad
1、判断是否在iPad上
BOOL iPad = ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad);
二、UISplitViewController 分割视图控制器
1、UISplitViewController 分割视图控制器(顶级视图,不能放在Nav或者其他视图中)
(1 可以通过 if (self.splitViewController) 判断是否是分割视图中
@property (strong) UISplitViewController *splitViewController;
(2 控制器分为两部分,0 代表 Master, 1 就是指 Detail
@property (copy) NSArray *viewControllers;
比如说 UIViewController *detailVC = self.splitViewController.viewControllers[1]; 如果我们处在分割视图中,它会返回detail,否则它会返回nil,这个也可以用来判断是否在分割视图中
2、delegate 协议(需要在ViewDidLoad之前就定义好协议,可能是在awakeFromNib)
(1 主要用来控制master和detail何时出现
(2 比如
- (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中响应呢?
(1 通过action,通过prepareSegue一样
- (IBAction)doit
{
id detailViewController = self.splitViewController.viewControllers[1];
[detailViewController setSomeProperty:...];
}
(2 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;
OC开发_Storyboard——iPad开发的更多相关文章
- iOS开发——高级篇——iPad开发、iPad开发中的modal
一.iPad简介 1.什么是iPad一款苹果公司于2010年发布的平板电脑定位介于苹果的智能手机iPhone和笔记本电脑产品之间跟iPhone一样,搭载的是iOS操作系统 2.iPhone和iPadi ...
- iPad开发(相对于iPhone开发时专有的API)
iPad开发 一.iPad开发简介 1.什么是iPad 一款苹果公司于2010年发布的平板电脑 定价介于苹果的智能手机iPhone和笔记本电脑产品之间 跟iPhone一样,搭载的是iOS操作系统 2. ...
- 初学iPad开发入门
iPad是一款苹果公司于2010年发布的平板电脑定位介于苹果的智能手机iPhone和笔记本电脑MacBook产品之间跟iPhone一样,搭载的是iOS操作系统 iPhone和iPad开发的区别 屏幕的 ...
- iOS开发UI篇—iPad开发中得modal介绍
iOS开发UI篇—iPad开发中得modal介绍 一.简单介绍 说明1: 在iPhone开发中,Modal是一种常见的切换控制器的方式 默认是从屏幕底部往上弹出,直到完全盖住后面的内容为止 说明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开发的区别 屏幕的 ...
- iPhone与iPad开发实战读书笔记
iPhone开发一些读书笔记 手机应用分类1.教育工具2.生活工具3.社交应用4.定位工具5.游戏6.报纸和杂志的阅读器7.移动办公应用8.财经工具9.手机购物应用10.风景区相关应用11.旅游相关的 ...
随机推荐
- HBase系统入门--整体介绍
转自:http://www.aboutyun.com/thread-8957-1-2.html 问题导读:1.HBase查询与写入哪个更好一些?2.HBase面对复杂操作能否实现?3.Region服务 ...
- C的内存四大区
前提 看视频得来的内容,只知道不止4个区,但主要是这4个区. 四区 静态区 用于存放所有的全局变量和静态变量. ; //静态区 int main(){ ; //静态区 ; } 代码区 就是存放程序的执 ...
- 使用ffmpeg获取视频流后如何封装存储成mp4文件
int main(int argc,char *argv[]) 02 { 03 AVFormatContext *pFormatCtx; 04 int i,videoStream; 05 AVC ...
- CentOS安装emacs24.2命令
CentOS安装emacs24.2命令 #1.安装如下软件 yum -y groupinstall "Development Tools" yum -y install gtk+- ...
- ThinkPHP的ajaxReturn方法的使用
ThinkPHP后端的代码如下: public function testAjax(){ $this->ajaxReturn(array('name'=>'z','age'=>18) ...
- ActiveMQ-5.13.0集群
ActiveMQ集群介绍 ActiveMQ具有强大和灵活的集群功能,但在使用的过程中会发现很多的缺点,ActiveMQ的集群方式主要由两种:Master-Slave(ActiveMQ5.8版本已不可用 ...
- Android 下使用 JSON 实现 HTTP 请求
不得不说,JSON 格式的确是非常美妙的,速度快而且简化了很多操作在 Android 下,Android SDK 已经为我们封装好了整个与 JSON 有关的操作,使用非常方便 以下就是一个标准的 JS ...
- 使用Visual Studio将C#生成DLL文件的方法
1.命令方式 打开Visual Studio安装目录下的开发人员命令提示 译 File.cs 以产生 File.exe csc File.cs 编译 File.cs 以产生 File.dll csc ...
- linux定时任务cron 安装配置
名词解释: cron是服务名称,crond是后台进程,crontab则是定制好的计划任务表. 软件包安装: 要使用cron服务,先要安装vixie-cron软件包和crontabs软件包,两个软件包作 ...
- ubuntu samba
Linux 下的文件共享利器 Samba 想必大家已经非常熟悉了,今天我们介绍下如何在Ubuntu 14.04中使用 Samba 共享网络文件.打印机和其它公共资源. 1.安装 Samba 和图形配置 ...