系统方法解读ui问题iOS渲染和动画

【iOS UI】popoverPresentationContr

2017-05-17  本文已影响2598人  XIAO_WEN
popoverPresentationController

preface:

1、支持协议

@interface ViewController ()<UIPopoverPresentationControllerDelegate>

2、添加按钮,并为其绑定方法

    _btn = [UIButton buttonWithType:UIButtonTypeCustom];
    _btn.frame = CGRectMake(150, 100, 100, 100);
    
    [_btn setTitle:@"PopOver" forState:UIControlStateNormal];
    _btn.backgroundColor = [UIColor orangeColor];
    [_btn addTarget:self action:@selector(pop) forControlEvents:UIControlEventTouchDown];
    [self.view addSubview:_btn];

3、pop方法

- (void)pop{
    
    //  初始化弹出控制器
    UIViewController *vc = [UIViewController new];
    
    //  背景色
    vc.view.backgroundColor = [UIColor yellowColor];
    
    //  弹出视图的显示样式
    vc.modalPresentationStyle = UIModalPresentationPopover;
    
    //  1、弹出视图的大小
    vc.preferredContentSize = CGSizeMake(300, 300);
    
    //  弹出视图的代理
    vc.popoverPresentationController.delegate = self;
    
    //  弹出视图的参照视图、从哪弹出
    vc.popoverPresentationController.sourceView = _btn;
    
    //  弹出视图的尖头位置:参照视图底边中间位置
    vc.popoverPresentationController.sourceRect = _btn.bounds;
    
    //  弹出视图的箭头方向
    vc.popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionAny;
    
    //  弹出
    [self presentViewController:vc animated:YES completion:nil];
}

4、代理方法

设置点击蒙版是否消失

- (BOOL) popoverPresentationControllerShouldDismissPopover:(UIPopoverPresentationController *)popoverPresentationController{

   return YES;

}

默认返回的是覆盖整个屏幕,需设置成UIModalPresentationNone

- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller{

    return UIModalPresentationNone;

}

弹出视图消失后调用的方法

- (void)popoverPresentationControllerDidDismissPopover:(UIPopoverPresentationController *)popoverPresentationController{

    NSLog(@"dismissed");

}
上一篇下一篇

猜你喜欢

热点阅读