UIPopoverController简单实用

一:简介

•UIPopoverController是在iPad开发中常用的一个组件(在iPhone上不允许使用),使用非常简单
•UIPopoverController也 是一个控制器,跟其他控制器不一样的是,它 直接继承自NSObject,并非继承自UIViewController
•它只占用部分屏幕空间来呈现信息,而且显示在屏幕的最前面

二:使用步骤

要想成功显示一个UIPopoverController,需要经过下列步骤:

1>设置内容控制器

    由于UIPopoverController直接继承自NSObject,不具备可视化的能力,因此UIPopoverController上面的内容必须由另外一个继承自UIViewController的控制器来提供,这个称为“内容控制器”

设置内容控制器有三种方法:
- (id)initWithContentViewController:(UIViewController *)viewController;
在初始化UIPopoverController的时候传入一个内容控制器

@property (nonatomic, retain) UIViewController *contentViewController;
通过@property设置内容控制器

- (void)setContentViewController:(UIViewController *)viewController animated:(BOOL)animated;
   animated可以指定设置内容控制器时要不要带有动画效果
2>设置内容的尺寸
     显示出来占据多少屏幕空间
设置内容的尺寸有两种方法:
@property (nonatomic) CGSize popoverContentSize;

- (void)setPopoverContentSize:(CGSize)size animated:(BOOL)animated;
3>设置显示的位置

    从哪个地方冒出来

设置显示的位置有两种方法:
- (void)presentPopoverFromRect:(CGRect)rect inView:(UIView *)view permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated;
这个方法需要传入一个CGRect和一个View,用来设置箭头指向的位置
这个CGRect的值是相对于这个View的,也就是说CGRect以View的左上角为坐标原点(0, 0)

举个例子,如果你要箭头指向被点击的button,那么
第一种方法是:
[pop presentPopoverFromRect:button.bounds inView:button permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];
第二种方法是:
[pop presentPopoverFromRect:button.frame inView:button.superview permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];

- (void)presentPopoverFromBarButtonItem:(UIBarButtonItem *)item permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated;
箭头会指向某一个UIBarButtonItem

三:使用注意

1>假如iPad的屏幕发生了旋转,UIPopoverController显示的位置可能会改变,那么就需要重写控制器的某个方法

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation

在上面的方法中重写设置UIPopoverController显示的位置

 

2>UIPopoverController和UIActionSheet有点不一样,需要自己管理内存

u必须retain这个UIPopoverController对象
u在ARC中,也就是用一个强引用来引用它
•在释放(调用dealloc)UIPopoverController对象之前一定要先dismiss
•在ARC下UIPopoverController的正确用法
(1)用一个强引用(成员变量或strong的@property)保存UIPopoverController对象

_pop = [[UIPopoverController alloc] initWithContentViewController:vc];

(2)设置UIPopoverController的delegate
在- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController代理方法中将强引用清空

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController

{

    _pop = nil;

}

3>防止点击UIPopoverController区域外消失

•默认情况下,只要UIPopoverController显示在屏幕上,UIPopoverController背后的所有控件默认是不能跟用户进行正常交互的,点击UIPopoverController区域外的控件后,UIPopoverController会默认消失
•要想点击UIPopoverController区域外的控件时UIPopoverController不消失,解决办法是设置UIPopoverController的passthroughViews属性

@property (nonatomic, copy) NSArray *passthroughViews;

这个属性是设置当UIPopoverController显示出来时,哪些控件可以继续跟用户进行正常交互。这样的话,点击区域外的控件就不会让UIPopoverController消失了

4>外观

有2个属性可以微调UIPopoverController的外观

@property (nonatomic, readwrite) UIEdgeInsets popoverLayoutMargins

这个属性可以调整显示的位置,设置跟默认显示位置的间距,比如UIEdgeInsetsMake(0, 0, 0, 40)代表距离默认显示位置有40的间距

@property (nonatomic, readwrite, retain) Class popoverBackgroundViewClass

这个属性可以修改UIPopoverController的背景样式,需要设置一个继承了UIPopoverBackgroundView的子类类名,子类通过实现相应的方法来修改外观

四:其它属性与方法

@property (nonatomic, assign) id <UIPopoverControllerDelegate> delegate;
UIPopoverController的代理

@property (nonatomic, readonly, getter=isPopoverVisible) BOOL popoverVisible;
UIPopoverController是否可见

@property (nonatomic, readonly) UIPopoverArrowDirection popoverArrowDirection;
箭头的方向

- (void)dismissPopoverAnimated:(BOOL)animated;
关闭UIPopoverController,会触发相应的代理方法

 

转载于:https://www.cnblogs.com/yaoxc/p/3891788.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的海滨体育馆管理系统,源码+数据库+毕业论文+视频演示 本基于Spring Boot的海滨体育馆管理系统设计目标是实现海滨体育馆的信息化管理,提高管理效率,使得海滨体育馆管理工作规范化、高效化。 本文重点阐述了海滨体育馆管理系统的开发过程,以实际运用为开发背景,基于Spring Boot框架,运用了Java技术和MySQL作为系统数据库进行开发,充分保证系统的安全性和稳定性。本系统界面良好,操作简单方便,通过系统概述、系统分析、系统设计、数据库设计、系统测试这几个部分,详细的说明了系统的开发过程,最后并对整个开发过程进行了总结,实现了海滨体育馆相关信息管理的重要功能。 本系统的使用使管理人员从繁重的工作中解脱出来,实现无纸化办公,能够有效的提高海滨体育馆管理效率。 关键词:海滨体育馆管理,Java技术,MySQL数据库,Spring Boot框架 本基于Spring Boot的海滨体育馆管理系统主要实现了管理员功能模块和学生功能模块两大部分,这两大功能模块分别实现的功能如下: (1)管理员功能模块 管理员登录后可对系统进行全面管理操作,包括个人中心、学生管理、器材管理、器材借出管理、器材归还管理、器材分类管理、校队签到管理、进入登记管理、离开登记管理、活动预约管理、灯光保修管理、体育论坛以及系统管理。 (2)学生功能模块 学生在系统前台可查看系统信息,包括首页、器材、体育论坛以及体育资讯等,没有账号的学生可进行注册操作,注册登录后主要功能模块包括个人中心、器材管理、器材借出管理、器材归还管理、校队签到管理、进入登记管理、离开登记管理、活动预约管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值