iOS:UIPopoverController示例

来源:互联网 发布:java public和private 编辑:程序博客网 时间:2024/06/03 22:39
iPad特有的方法,iPhone无法使用

效果图

具体使用方法(下有demo):


创建一个UIViewController,这个UIViewController就是这个方框,需要具体在UIViewController里面怎么布局就看自己的安排了,上面的那个角是系统生成的,具体怎么生成的,下面讲。

首先我们要明确,肯定是点了发起讨论才使UIPopoverController出现的,所以,创建就写在按钮的触发方法里面。

这些是需要的界面
@property (nonatomic,strong)RightViewFactory *rightView;
@property (nonatomic,strong)UIViewController *popVC;
@property (nonatomic,strong)UIPopoverController *popC;

首先肯定要判断这个视图控制器有没有,有的话就不要再多次创建了,而UIPopoverController可以多次创建是因为每次使用完后会自动销毁(貌似是这样的)
if (!_popVC) {
        _popVC = [[UIViewControlleralloc]init];
        _popVC.view.frame =CGRectMake(0,0,POPOVER_WIDTH,POPOVER_HEIGHT);
        _popVC.view.backgroundColor = [UIColorwhiteColor];
        //构建popVC的视图
        [self createPopVC];
    }

创建UIPopoverController
    //构建POPover
    self.popC = [[UIPopoverControlleralloc]initWithContentViewController:_popVC];

这个是设置UIPopoverController的尺寸,跟着你的视图控制器写就行了
    _popC.popoverContentSize =_popVC.view.frame.size;

重点来了,首先,sender是点击事件的按钮,_rightView是导航栏右导航项,也就是按钮在_rightView上面,permittedArrowDirections是设置那个角的朝向,ang顾名思义就是任何方向了
    [_popC presentPopoverFromRect:sender.frameinView:_rightViewpermittedArrowDirections:UIPopoverArrowDirectionAnyanimated:YES];


如果说在你的UIPopoverController中有push事件,需要在你push方法后跟着写一个

[_popCdismissPopoverAnimated:YES];

此方法是关闭UIPopoverController,否则push到下个界面你的UIPopoverController还存在在那里


以上示例,仅仅是简单使用,仅此参考,如诺有更多需求

我的具体demo:

这是点击事件,自己自定义一个button好了

demo里先判断视图控制器是否存在,因为viewController不会自动销毁,而且,ViewController的尺寸大小可以当做你的PopoverController的尺寸,你也可以使用PopoverController.popoverContentSize 设置PopoverController大小

sender.frame是button的frame

_rightView是我盛放button的界面(在我的demo里面相当于

self.navigationItem.rightBarButtonItem = [[UIBarButtonItemalloc]initWithCustomView:_rightView];

//设置发起讨论下的视图- (void)createImgView:(UIButton *)sender{    //判断视图控制器是否已经存在    if (!_popVC) {        _popVC = [[UIViewController alloc]init];        _popVC.view.frame = CGRectMake(0, 0, POPOVER_WIDTH, POPOVER_HEIGHT);        _popVC.view.backgroundColor = [UIColor whiteColor];        //构建popVC的视图        [self createPopVC];    }    //构建Popover    self.popC = [[UIPopoverController alloc]initWithContentViewController:_popVC];    _popC.popoverContentSize = _popVC.view.frame.size;    [_popC presentPopoverFromRect:sender.frame inView:_rightView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];}

//构建popVC的视图- (void)createPopVC{<span style="white-space:pre"></span>      //这里面是对ViewController的布局,相当于是对<span style="font-family: Arial, Helvetica, sans-serif;">PopoverController的布局,当然,你也可以子类化一个ViewController</span><span style="white-space:pre"></span>  }

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 赵本山怎么办的刘涌 起诉离婚被告不出庭怎么办 安装u盘进入系统怎么办 思讯加密狗坏了怎么办 村主任选不出来怎么办 你的id已被停用怎么办 车牌摇号中签后怎么办 北京车卖了指标怎么办 车的电脑板坏了怎么办 饭卡消磁了怎么办妙招 有好项目没资金怎么办 买的股票涨停了怎么办 考研没过国家线怎么办 中石化的油卡怎么办 5173号被找回了怎么办 谭木匠梳子断了怎么办 198地块上的企业怎么办 天猫投诉不成立怎么办 顾客老嫌瓷砖贵怎么办 公司的公章丢了怎么办 物业不给充电费怎么办 怎么办社保卡去哪里办 单位没给社保卡怎么办 诈骗链接点开了怎么办 私人老板拖欠工资不给怎么办 辞职了工资不发怎么办 老板欠工资不给怎么办 投资平台跑路了怎么办 眼镜太松往下滑怎么办 塑胶水管管断了怎么办 淘宝排名靠后了怎么办 我有古董想出售怎么办 被拍卖公司骗了怎么办 苹果4s铃声太小怎么办 新号码注册微信怎么办 uc不能下种子了怎么办 刚出生的小牛喘怎么办 回奶之后有硬块怎么办 回奶第十天硬块怎么办 断奶期间乳房有硬块怎么办 断奶后乳房有肿块怎么办