iPad 控件UIPopoverController使用

UIPopoverController 是iPad特有控件,(iOS7-9),在iOS9之后别废弃

使用步骤

  • 设置内容控制器

    • UIPopoverController直接继承NSObject,不具备可视化能力。所以一定要指定一个继承自UIViewController的“内容控制器”来提供内容
  • 设置内容的尺寸
    • 在屏幕上显示的大小
  • 从那个地方显示出来

code

  • 新建一个VC类 MenuViewController 作为 UIPopoverController 的内容控制器,
  • 在HomeVC增加一个属性@property (nonatomic, strong) UIPopoverController *popOver;
- (void)popPopView {
    // 设置内容控制器
    MenuViewController *menuVC = [[MenuViewController alloc] init];
    self.popOver = [[UIPopoverController alloc] initWithContentViewController:menuVC];

    // 设置内容的尺寸  如果内容控制器里设置了 preferredContentSize 大小 self.preferredContentSize = CGSizeMake(200, 200); 那么 self.popOver.popoverContentSize 将无意义,而且在实际开发中也应该由内容控制器控制大小
    self.popOver.popoverContentSize = CGSizeMake(300, 400);

    // 从那个地方显示出来 第一个参数是popOver出现的位置,第二个参数是箭头方向
    [self.popOver presentPopoverFromBarButtonItem:self.navigationItem.leftBarButtonItem permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

    // 这个方法是自定义出现的位置  Rect:箭头指向的区域范围,以View的左上角为坐标原点
    //    [self.popOver presentPopoverFromRect:CGRectMake(GetWindowWidth * 0.5, 200, 0, 0) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}

    

  注意:如果内容控制器里设置了 preferredContentSize 大小 self.preferredContentSize = CGSizeMake(200, 200); 那么 self.popOver.popoverContentSize 将无意义,而且在实际开发中也应该由内容控制器控制大小

menuVC

  • - (void)viewDidLoad {
        [super viewDidLoad];
        self.view.backgroundColor = [UIColor redColor];
        self.preferredContentSize = CGSizeMake(200, 200);
    }

  

  • 设置代理

    • // 设置代理
      self.popOver.delegate = self;
    • #pragma mark-代理方法
      // popoverController消失的时候调用
      -(void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {

      }
      // popoverController的位置改变的时候调用(如竖屏变横屏)
      -(void)popoverController:(UIPopoverController *)popoverController willRepositionPopoverToRect:(inout CGRect *)rect inView:(inout UIView *__autoreleasing *)view {

      }
      // 用来决定用户点击了蒙版后,popoverController是否可以dismiss,返回YES代表可以,返回NO代表不可以
      -(BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController {
          return NO;
      }

  • 蒙版注意点
  • // 默认情况下 只要UIPopoverController显示在屏幕上,UIPopoverController背后的所有控件默认是不能跟用户进行正常交互的,点击UIPopoverController区域外的控件,UIPopoverController默认会消失
    // 要想点击UIPopoverController区域外的控件时不让UIPopoverController消失,解决办法是设置passthroughViews属性
    // 设置那些控件可以通过交互
  • self.popOver.passthroughViews = @[self.test11];  // 可以看到test11按钮可以交互

  

时间: 2024-09-29 09:14:20

iPad 控件UIPopoverController使用的相关文章

iPad 控件 UIPopoverPresentationController 使用 iPhone可用

UIPopoverController 在iOS9之后被废弃了,,, iOS8 新控件UIPopoverPresentationController可运用在iphone和iPad上,使用基本同 UIPopoverController - (void)iPadAndIphonePopOver {    MenuViewController *menuVC = [[MenuViewController alloc] init];    menuVC.modalPresentationStyle =

银联手机支付控件官方使用指南(ios版)

目录 版本信息... 2 目录      3 1       概述... 1 2       支付流程介绍... 1 3       测试帐号... 2 4       iOS客户端... 3 4.1      SDK说明... 3 4.2       接口说明... 4 4.3       添加SDK包... 5 4.4       调用插件... 5 5       常见问题总结... 6 5.1      iOS平台常见问题... 6 1      概述 银联手机支付控件(以下简称支付控件

猫猫学iOS之ipad开发Popover的调色板应用_popover显示后其他控件仍然能进行交互

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 一:效果 后面的是xcode的控制台 二:代码 ViewController #import "ViewController.h" #import "ColorsViewController.h" @interface ViewController () <ColorsViewControllerDelegate, UIPop

iphone &amp; ipad 各种控件默认大小

1.状态栏 状态栏一般高度为20像素,在打手机或者显示消息时会放大到40像素高,注意,两倍高度的状态栏在好像只能在纵向的模式下使用.如下图 用户可以隐藏状态栏,也可以将状态栏设置为灰色,黑色或者半透明的黑色. 如果需要隐藏状态栏可以使用调用: [[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]; 或者在应用程序文件Info.plist中将UIStatusBarHidden键设为ture. 2.导航栏 在纵向

iphone和ipad各控件大小

ipad和iphone是一样的: iphone和ipad各控件大小

让系统自动控制控件在控制器视图的位置

IPhone.IPad经常会遇到横竖屏切换,或者需要自动调整大小.如果你的界面不能用storyboard和xib来生成界面的话,先把控制器视图的frame属性值固定下来,然后添加subview(子视图)的时候,就可以使用视图继承类(UIView) 自带的 autoresizingMask 属性,之后如果横竖屏切换,或者是使用UIPopoverController之类的方法,就可以只设置一次frame属性,以后的frame属性都是自适应的(frame缩小太多的话效果不好,根据情况而定). 原理:设

iPad开发中UIPopoverController的使用

什么是UIPopoverController 是iPad开发中常见的一种控制器 跟其他控制器不一样的是,它直接继承自NSObject,并非继承自UIViewController 它只占用部分屏幕空间来呈现信息,而且显示在屏幕的最前面 使用步骤 要想显示一个UIPopoverController,需要经过下列步骤 设置内容控制器 由于UIPopoverController直接继承自NSObject,不具备可视化的能力 因此UIPopoverController上面的内容必须由另外一个继承自UIVi

UISplitViewController-分割控件自定义分割宽度是无法实现的

这篇文档主要说明,在分割控件的使用中,遇到的一些问题. 分割控件中,苹果官方给的一个方法,来控制弹出页面的方法. self.contentSizeForViewInPopover = CGSizeMake(100.0, 600.0); 根据帮助文档说明,改方法来控制弹出的分割控件的尺寸大小. 但是,在实际应用中,却发先不起任何作用.纳闷啊. 原来,压根就不起作用,调试了很久,找了很久.最后得出的结论是:分割控件的控制视图是无法自定义大小的. 在苹果的方法中,虽然预留了这样的方法,但是实现不给力啊

IOS之基本UI控件

3.1 Button控件 3.2 开关控件 3.3 滑块控件 3.4 工具栏 3.5 WebView 3.1 Button控件 iPhone的Button控件可以做的很绚丽,Button可以有多种状态: " Default State " Highlighted State " Selected State " Disabled State 实现上图的效果:新建ButtonsBackground项目: ButtonsBackgroundViewController.