iOS -- UIPopoverPresentationController 实现弹框

效果图:

iOS -- UIPopoverPresentationController 实现弹框_第1张图片

之前系统自带的UIPopoverController是专门为iPad服务的弹框视图,UIPopoverPresentationController是iOS8以后新增的,是UIViewController的属性。使用的的时候,需要创建的是UIViewController。

初始化弹框

   //初始化内容视图控制器
         contentVC = [[MyViewController alloc]init];
     //设置大小
         contentVC.preferredContentSize = CGSizeMake(110, 160);
     
     // 设置弹出效果
     contentVC.modalPresentationStyle = UIModalPresentationPopover;
     //初始化一个popover
         self.popover = contentVC.popoverPresentationController;
         self.popover.delegate = self;
     //设置弹出视图的颜色
         self.popover.backgroundColor = [UIColor greenColor];
     //设置popover的来源按钮(以button谁为参照)
         self.popover.sourceView =button;
     //设置弹出视图的位置(以button谁为参照)
         self.popover.sourceRect = button.bounds;
    //箭头的方向 设置成UIPopoverArrowDirectionAny 会自动转换方向
     self.popover.permittedArrowDirections = UIPopoverArrowDirectionUp;
    //模态出弹框
         [self presentViewController:contentVC animated:YES completion:nil];//推出popover
内容视图content包含一个列表;

delegate 遵守协议UIPopoverPresentationControllerDelegate
sourceView
确定位置,确定参照视图
sourceRect 弹框大小
permittedArrowDirections
箭头的方向 

#pragma mark --  实现代理方法
//默认返回的是覆盖整个屏幕,需设置成UIModalPresentationNone。
 - (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller{
     return UIModalPresentationNone;
 }

//点击蒙版是否消失,默认为yes;

-(BOOL)popoverPresentationControllerShouldDismissPopover:(UIPopoverPresentationController *)popoverPresentationController{
    return YES;
}

//弹框消失时调用的方法
-(void)popoverPresentationControllerDidDismissPopover:(UIPopoverPresentationController *)popoverPresentationController{
    
    NSLog(@"弹框已经消失");
    
}


你可能感兴趣的:(iOS -- UIPopoverPresentationController 实现弹框)