zoukankan      html  css  js  c++  java
  • 斯坦福大学IOS开发课程笔记(第七课第一部分)

    转载请注明出处

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


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

  • 相关阅读:
    基于element-ui图片封装组件
    计算时间间隔具体每一天
    C语言学习笔记 —— 函数作为参数
    AtCoder Beginner Contest 049 题解
    AtCoder Beginner Contest 048 题解
    AtCoder Beginner Contest 047 题解
    AtCoder Beginner Contest 046 题解
    AtCoder Beginner Contest 045 题解
    AtCoder Beginner Contest 044 题解
    AtCoder Beginner Contest 043 题解
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5222553.html
Copyright © 2011-2022 走看看