zoukankan      html  css  js  c++  java
  • iPad

    一、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; 
  • 相关阅读:
    【转】Lesktop 1.0 ——开源JS控件库,WebIM和网盘
    个人开公司的流程,以后用得着(转)
    C#中的弱引用
    同步异步的知识补充
    SynchronizationContext
    泛型弱引用(不继承 System.WeakReference)
    【转】亂數產生器:Random 與 RNGCryptoServiceProvider
    Oracle trunc()函数的用法
    [转]C# WinForm自定义控件整理
    自定义控件小结进阶篇(转)
  • 原文地址:https://www.cnblogs.com/gongyuhonglou/p/5825544.html
Copyright © 2011-2022 走看看