iOS开发中UIPopoverController的使用详解

2020-01-14 17:18:36王旭

- (void)viewDidLoad
{
    [super viewDidLoad];
}

-(void)showPopoverFromItem
{
    //1.新建一个内容控制器
    YYMenuViewController *menuVc=[[YYMenuViewController alloc]init];
    
    //2.新建一个popoverController,并设置其内容控制器
    self.popover=[[UIPopoverController alloc]initWithContentViewController:menuVc];
    
    //3.设置尺寸
    //    self.popover.popoverContentSize=CGSizeMake(300, 200);
    
    //4.显示
    [self.popover presentPopoverFromBarButtonItem:self.navigationItem.leftBarButtonItem permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    
    //5.设置代理
    self.popover.delegate=self;
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    
}

#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;
}
- (IBAction)buttonClick:(UIButton *)sender {
    
    //1.新建一个popoverController并设置其内容控制器
    YYMenuViewController *menuVc=[[YYMenuViewController alloc]init];
    self.popover=[[UIPopoverController alloc]initWithContentViewController:menuVc];
    
    //2.显示
    //2.1第一种方式
//    [self.popover presentPopoverFromBarButtonItem:<#(UIBarButtonItem *)#> permittedArrowDirections:<#(UIPopoverArrowDirection)#> animated:<#(BOOL)#>];
    //2.2第二种方式
    [self.popover presentPopoverFromRect:sender.bounds inView:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];