博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
斯坦福大学IOS开发课程笔记(第七课第一部分)
阅读量:6175 次
发布时间:2019-06-21

本文共 2390 字,大约阅读时间需要 7 分钟。

 

转载请注明出处

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

作者:小马

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

 

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

 

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

 

 

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

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

 

 

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

 

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

 

 

 

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

(BOOL)splitViewController:(UISplitViewController*)sender  shouldHideViewController:(UIViewController *)master             inOrientation:(UIInterfaceOrientation)orientation
这个函数控制左边栏在不同方向是否隐藏。从上图三张图能够看到不同实现的显示效果,非常easy理解。不多说。

 

 

 

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

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是在用户触摸到它的区域已外时会自己主动关闭,能够改变这样的行为。比較简单。

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

 

 

 

你可能感兴趣的文章
(一一〇)二维数组里找零最多的题目
查看>>
dotCloud say PostgreSQL does not scale for High Availability on the dotCloud Platform
查看>>
Tomcat shutdown无法结束进程的问题
查看>>
Android源码阅读小技巧
查看>>
基于github androidmvp代码 对mvp进行思考
查看>>
javascript设计模式小结
查看>>
ECMAScript6简介
查看>>
谈一下PHP站点页面静态化的原理
查看>>
分享专业网站建设多年来对网页制作的经验
查看>>
windows查看占用端口程序
查看>>
Linux系统下测试磁盘读写IO性能(物理机和虚拟机的测试)
查看>>
java中带回调函数的字符串替换,类似js中的replace(rgExp,function)
查看>>
注解使用
查看>>
第五章 面向对象(二)
查看>>
交换机接入安全
查看>>
Java Axis Service 手动调用WebService 入参为NULL
查看>>
linux学习笔记九:一般Tarball软件安装流程(以ntp-4.2.4p7.tar.gz为例)
查看>>
数据刷新-界面加载不空白的钥匙
查看>>
一句话搞定webmap(一)——轻地图组件
查看>>
c++数据类型间的转换
查看>>