iOS:UIPopoverController示例

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 = [[ UIViewController alloc ] init ];
        _popVC . view . frame = CGRectMake ( 0 , 0 , POPOVER_WIDTH , POPOVER_HEIGHT );
        _popVC . view . backgroundColor = [ UIColor whiteColor ];
        // 构建 popVC 的视图
        [ self createPopVC ];
    }

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

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

重点来了,首先,sender是点击事件的按钮,_rightView是导航栏右导航项,也就是按钮在_rightView上面, permittedArrowDirections 是设置那个角的朝向,ang顾名思义就是任何方向了
    [ _popC presentPopoverFromRect :sender. frame inView : _rightView permittedArrowDirections : UIPopoverArrowDirectionAny animated : 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值