转载请注明出处

http://blog.csdn.net/pony_maggie/article/details/31462099

作者:小马

这节课的内容太多,分两部分介绍。本节课主要是介绍怎样开发基于ipad的应用程序。涉及到了一些仅仅有ipad才有的类,接口等。

先讲到UIToolbar工具栏。经常使用的UI控件。在工具栏上button一样的东西叫UIBarButtonItems,能够像一般button一样操作它,比方建立outlet,action等。使用的时候仅仅要从工具箱里拖到视图中就能够了,当然假设你想动态的控制。用代码实现也是没问题的。第二部分的demo程序就会涉及到这一点。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcG9ueV9tYWdnaWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

上图看到的UI效果叫分屏视图(split view),有一个控制器类叫UISplitViewController。
这个是仅仅在ipad应用下才有的,也就是你新建project时,要选择ipad或universal应用,才干够使用这个类。当然这个视图控件也仅仅有在基于ipad的storyboard(一个project能够有多个storyboard,后面的代码演示样例会看到这个使用方法)中才干够拖出来使用。应该能够理解为仅仅有ipad才有这种控件。毕竟屏幕比較大这种显示效果才有意义。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcG9ueV9tYWdnaWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

既然是分屏,左边的叫全局栏(master),右边的叫细节栏(detail)。

UISplitViewController本身有个NSArray类型属性叫viewControllers,数组第一个元素是master,第二个是detail。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcG9ueV9tYWdnaWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

分屏视图和代理(delegate)是永远不分家的,假设没有代理你会发现ipad竖屏时,左边栏会消失,你无法从不论什么地方开启它(正常情况下,是要有个toolbar上的button,按一下。左边栏会出现)。 这个在后面的代码演示样例中。我还会讲到。

这里既然提到ipad竖屏, 就多说一些,分屏视图在转到竖屏时,有两种显示方案,一是上面提到的左边栏消失,只是会在toolbar上放一个button,按一下就能够以Popover(后面会介绍)的形式弹出来。另一种是左右同一时候显示,可是要”挤压”一下,就像ipad里的设置功能的UI一样。详细用哪一种还是要依据实际开发的功能以及显示效果。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcG9ueV9tYWdnaWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

我们一次讲完上面三幅图。说的是同一个函数。

(BOOL)splitViewController:(UISplitViewController*)sender
shouldHideViewController:(UIViewController *)master
inOrientation:(UIInterfaceOrientation)orientation

这个函数控制左边栏在不同方向是否隐藏。从上图三张图能够看到不同实现的显示效果,非常easy理解。不多说。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcG9ueV9tYWdnaWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

控制左边栏怎样显示须要用到代理,当前视图控制器把自己作为代理。并实现

UISplitViewControllerDelegate

这个协议里的一些方法。 上面提到的那个方法就是当中之中的一个。当然还有其他方法。例如以下:

//左边栏将要隐藏时调用(比方由横屏转到竖屏)
- (void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)pc
{
//做两件事
//一,把工具栏上button的title设置成self.title(这里是"doctor")
//二,把button放到工具栏上,这个任备要由右边栏完毕,由于这个时候仅仅有右边栏是显示的。 barButtonItem.title = self.title;
[self splitViewBarButtonItemPresenter].splitViewBarButtonItem = barButtonItem; } //左边栏将要显示时调用(比方由竖屏转到横屏)
- (void)splitViewController:(UISplitViewController *)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
//把工具栏上的button移除。由于左边栏显示,所以不须要
[self splitViewBarButtonItemPresenter].splitViewBarButtonItem = nil;
}

这里说到怎样更新细节栏。当全局栏变化时。可能要更新细节栏中的显示,有两种方法。一种是非常直接的。用target/action,相当于一个响应事件,在处理函数里设置就能够,如上图。另一种不太经常使用,就是用segue, 这样的方法事实上相当于把整个原来的右边栏视图换掉。载入一个新的视图。相当少用。

只是后面的代码演示样例中,会用到这一点。要留意。

这里讲到弹出窗体(popover)的一些属性,怎样设置等,还有就是怎样改变弹出窗体的默认行为,比方默认情况下,popover是在用户触摸到它的区域已外时会自己主动关闭,能够改变这样的行为。比較简单。

第二部分会具体解说代码演示样例。

斯坦福大学IOS开发课程笔记(第七课第一部分)的更多相关文章

  1. IOS学习之斯坦福大学IOS开发课程笔记(第六课)

    转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/28398697 作者:小马 这节课主要讲述多个MVC是怎样协同工作的.到眼下为止.全 ...

  2. 斯坦福大学 iOS 开发公开课总结

     斯坦福大学 iOS 开发公开课总结   前言 iPhone 开发相关的教程中最有名的,当数斯坦福大学发布的 "iPhone 开发公开课 " 了.此公开课在以前叫做<iPho ...

  3. ios专题 - 斯坦福大学iOS开发公开课总结

    转自:http://blog.devtang.com/blog/2012/02/05/mvc-in-ios-develop/ 前言 iphone开发相关的教程中最有名的,当数斯坦福大学发布的”ipho ...

  4. iOS开发Swift篇—(七)函数(1)

    iOS开发Swift篇—(七)函数 一.函数的定义 (1)函数的定义格式 func 函数名(形参列表) -> 返回值类型 { // 函数体... } (2)形参列表的格式 形参名1: 形参类型1 ...

  5. 深度学习课程笔记(七):模仿学习(imitation learning)

    深度学习课程笔记(七):模仿学习(imitation learning) 2017.12.10 本文所涉及到的 模仿学习,则是从给定的展示中进行学习.机器在这个过程中,也和环境进行交互,但是,并没有显 ...

  6. iOS开发Swift篇—(七)函数

    iOS开发Swift篇—(七)函数 一.函数的定义 (1)函数的定义格式 1 func 函数名(形参列表) -> 返回值类型 { 2 // 函数体... 3 4 } (2)形参列表的格式 形参名 ...

  7. 2011斯坦福大学iOS应用开发教程学习笔记(第一课)MVC.and.Introduction.to.Objective-C

    blog.csdn.net/totogo2010/article/details/8205810  目录(?)[-] 第一课名称 MVC and Introduction to Objective-C ...

  8. iOS开发学习笔记:基础篇

    iOS开发需要一台Mac电脑.Xcode以及iOS SDK.因为苹果设备都具有自己封闭的环境,所以iOS程序的开发必须在Mac设备上完成(当然,黑苹果应该也是可以的,但就需要花很多的精力去折腾基础环境 ...

  9. ios开发学习笔记(1)

    objective-c基础总结 第一二章 1.application:didiFinishLauchingWithOptions:程序启动后立即执行 2.启动界面代码格式:self.window = ...

随机推荐

  1. Apache RewriteCond RewriteRule 入门和Laravel去掉index.php

        Ci删除index.php办法: 创建.htaccess 文件放到网站的根目录下,文件中的内容如下: RewriteEngine onRewriteCond %{REQUEST_FILENAM ...

  2. Java发送HTTP POST请求(内容为xml格式)

    今天在给平台用户提供http简单接口的时候,顺便写了个调用的Java类供他参考.      服务器地址:http://5.0.217.50:17001/VideoSend 服务器提供的是xml格式的h ...

  3. block 解析 - 成员变量

    回顾 在 上一篇 中我们讲了截获变量特性,对于局部变量,变量不加__block修饰符,在block内部是无法修改变量的值.而且 对值类型的修改,如果block初始化后,无法同步到block内部 对于指 ...

  4. 「C」关键字、标识符、注释、内存分析、数据、常量、变量

    一.关键字 C语言提供的有特殊含义的符号,共32个. 一般在Xcode中关键字全部显示紫褐色,关键字全部都为小写.如int.return等. 二.标识符 标识符是程序员在程序中自定义的一些符号和名称. ...

  5. TCP粘包和半包的处理方法

    先把处理的方法的代码放这里: 解析数据帧的代码: bool CSocket::findData(byte* buff, int& len) { for (int i = 0; i <= ...

  6. 我的Python成长之路---第八天---Python基础(25)---2016年3月5日(晴)

    多进程 multiprocessing模块 multiprocessing模块提供了一个Process类来代表一个进程对象 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...

  7. 面向对象程序设计-C++ Finial exam review NOTES【第十六次上课笔记】

    写在前面: 我记得也不全,如果有记录的更全的同学可以留言,我会添加哒 :) 常量 内敛函数 为什么需要内敛函数 内敛函数适用于什么场合 内敛函数本身,最大优点是,避免了真正函数调用的开销 因为普通函数 ...

  8. 高级UNIX环境编程13 守护进程

    linux下,keventd守护进程为内核中运行的执行的函数提供进程上下文 bdflush,kupdated将高速缓存中的数据冲洗到磁盘上

  9. gcc编译4个阶段

    gcc的编译流程分为四个步骤,分别为:· 预处理(Pre-Processing)  -E· 编译(Compiling)         -S· 汇编(Assembling)        -c· 链接 ...

  10. perl学习(2) 基本数据类型等

    1.1.数字 所有数字格式内部一致,全部是double 7.25e45   == 7.25 * 1045 5.25 6.00 5.1-2.4          #5.1-2.4,2.7 10/3    ...