面试资料demoiOS 开发成长中心

iOS开发--UIPopoverPresentationCont

2017-02-06  本文已影响4547人  爱吃鱼的小灰

这个是跟微信的这个功能相似

1

下边是我的测试图片:

2.png

点击+按钮就可以弹出橘色的视图
下边上代码了啊!

 - (void)buttonClick:(UIButton *)sender
{
    JHViewController * testVC = [JHViewController new];
    // 设置大小
    testVC.preferredContentSize = CGSizeMake(100, 100);
    // 设置 Sytle
    testVC.modalPresentationStyle = UIModalPresentationPopover;
    // 需要通过 sourceView 来判断位置的
    testVC.popoverPresentationController.sourceView = self.button;
    // 指定箭头所指区域的矩形框范围(位置和尺寸),以sourceView的左上角为坐标原点
    // 这个可以 通过 Point 或  Size 调试位置
    testVC.popoverPresentationController.sourceRect = self.button.bounds;
    // 箭头方向
    testVC.popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionUp;
    // 设置代理
    testVC.popoverPresentationController.delegate = self;
    [self presentViewController:testVC animated:YES completion:nil];
}
-(UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller{
    return UIModalPresentationNone; //不适配
}

 - (BOOL)popoverPresentationControllerShouldDismissPopover:(UIPopoverPresentationController *)popoverPresentationController{
    return YES;   //点击蒙版popover消失, 默认YES
}

barButtonItem 的方便:
实际上就是其 API 中另外一个属性:

@property (nullable, nonatomic, strong) UIBarButtonItem *barButtonItem;

如果有navigationController, 并且从right/leftBarButtonItem点击后出现popover, 则可以把 right/leftBarButtonItem看做上面说的sourceView.默认箭头指向up,所以在这种情况下也可以不设置箭头方向。
一个 Bug

[Warning] <_UIPopoverBackgroundVisualEffectView 0x7fafbae14830> is being asked to animate its opacity. 
This will cause the effect to appear broken until opacity returns to 
上一篇 下一篇

猜你喜欢

热点阅读