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(, ); // 从那个地方显示出来 第一个参数是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按钮可以交互

  

iPad 控件UIPopoverController使用的更多相关文章

  1. iPad 控件 UIPopoverPresentationController 使用 iPhone可用

    UIPopoverController 在iOS9之后被废弃了,,, iOS8 新控件UIPopoverPresentationController可运用在iphone和iPad上,使用基本同 UIP ...

  2. Pad控件 UIPopoverController的介绍与使用(Pad的专属菜单控件、Swift版本)

    UIPopoverController 是iPad特有控件,iOS9之前,在iOS上也可以使用,在iOS9之后,只能用于Pad上. 如果非要在iOS上使用,编译不会有问题,运行后会崩溃,报错如下: T ...

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

    目录 版本信息... 2 目录      3 1       概述... 1 2       支付流程介绍... 1 3       测试帐号... 2 4       iOS客户端... 3 4.1 ...

  4. iOS iPhone iPad 各种控件默认高度

    iPhone iPad 各种控件默认高度 注意:这些是ios7之前的,ios7之后(包括ios7)有改动,我会在后面标注出来 iPhone和iPad下各种常见控件的宽度和标准是一样的,所以这里就用iP ...

  5. iPhone iPad 各种控件默认高度

    iPhone和iPad下各种常见控件的宽度和标准是一样的,所以这里就用iPhone说明. 以下是常见的几种控件的高度.Statusbar,Navigationbar和Tabbar的宽度极其图标大小. ...

  6. 【活动】参加葡萄城控件主办的“谁是报表达人”知识评测活动,赢取iPad Mini2

    一.参与资格 从事报表开发的博客园用户 二.活动时间 4月1日-4月30日 三. 活动形式 在活动期间,活动参与者只要回答从题库中随机抽出的与报表相关的六道题,就可以知道自己的报表知识等级.同时活动主 ...

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

    AJ分享,必须精品 一:效果 后面的是xcode的控制台 二:代码 ViewController #import "ViewController.h" #import " ...

  8. iPad开发--QQ空间,处理横竖屏布局,实现子控件中的代理

    一.主界面横竖屏效果图 二.主界面加载, 初始化Dock(红色框的控件),判断程序启动时的屏幕方向.调用自己- (void)transitionToLandScape:(BOOL)isLandScap ...

  9. 2、IOS开发--iPad之仿制QQ空间 (初始化HomeViewController子控件视图)

    1.先初始化侧边的duck,效果图: 实现步骤: 2.然后初始化BottomMenu,效果: 步骤: 其实到这里,会出现一个小bug,那就是: 子控件的位置移高了,主要原因是: 逻辑分析图: 问题解决 ...

随机推荐

  1. java 三个循环的优缺点

    package cc.knms.appservice.test; import java.text.ParseException; import java.util.ArrayList; import ...

  2. dfs序

    dfs序比较重要的性质:一棵子树的所有节点在dfs序里是连续一段,主要就是利用这个性质来解题 题型一:对某个点X权值加上一个数W,查询某个子树X里所有点权值和. 解:列出dfs序,实现修改一个数,查询 ...

  3. 谈事件冒泡(Bubble)和事件捕捉(capture)

    事件的发生顺序 假设在一个元素中又嵌套了另一个元素并且两者都有一个onClick事件处理函数(event handler).如果用户单击元素2,则元素1和元素2的单击事件都会被触发.但是哪一个事件先被 ...

  4. maven项目导入tomcat7源码

    大家好,今天给大家分享对于tomcat源码在eclipse上的导入运行.此次为以tomcat7为例. 1去官网tomcat7的下载页面下载源码网址http://tomcat.apache.org/do ...

  5. 在线markdown编辑器

    https://www.zybuluo.com/mdeditor http://mahua.jser.me/

  6. bootstrap学习

    1. bootstrap使用了less作为预编译器,他是结构清晰层次分明的css页面构建样式,即使你不喜欢bootstrap的样式,你仍然可以借鉴bootstrap编写css的这种方式 2.boots ...

  7. C#子类调用基类构造备忘

    using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace First ...

  8. JDK、JRE、JVM

    首先来说一下JDKJDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Env ...

  9. handshake_failure

    在java 1.6版本中,通过HttpsURLConnection请求class 1(多发生于免费ssl证书,比如沃通或者startssl的)的https网络地址时,可能会报握手异常: Caused ...

  10. _IntfClear报错问题

    delphi对象在释放时会清除对象相关接口.如果开发人员在这之前已经将接口对应的对象释放掉,那么当清除到该接口时经常会报访问内存错误,如下图