之前iPad特有的控件,现在iPhone亦可使用。
点击按钮,弹出popOverVC.
按钮的点击事件:
- (IBAction)pickOrderAction:(UIButton *)sender { // > 初始化要弹出的控制器
UIViewController * vc = [[UIViewController alloc] init];
vc.view.backgroundColor = [UIColor blueColor];
// > 设置弹出的控制器的显示样式
vc.modalPresentationStyle = UIModalPresentationPopover;
// > 弹出模式
vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
// > 弹出控制器的尺寸
vc.preferredContentSize = CGSizeMake(, );
// > 弹出控制器的箭头指向的view
vc.popoverPresentationController.sourceView = sender;
// > 弹出视图的箭头的“尖”的坐标 - 以sourceView的(0,0,0,0)为基准结合sourceRect。系统默认width/2使用。(sender.bounds的位置即:在sender的底部边缘居中)
vc.popoverPresentationController.sourceRect = sender.bounds;
// > 箭头的指向(上,下,左,右)
vc.popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionUp;
// > presentVC
[self presentViewController:vc animated:YES completion:nil];
}
ENOUGH TO USE?
iPad使用以上方法就可实现弹出功能
以下是iPhone的实现方法
TipViewController 是一个自定义的UIViewController
使用时一定要设置代理。并实现此代理方法;
效果如图:
/// 设置气泡 - 提示开播时间
TipViewController * tipVC = [[TipViewController alloc] init];
tipVC.preferredContentSize = CGSizeMake(, );
tipVC.modalPresentationStyle = UIModalPresentationPopover;
UIPopoverPresentationController * popVC = tipVC.popoverPresentationController;
popVC.delegate = self;
popVC.sourceView = startBtn;
popVC.sourceRect = CGRectMake(startBtn.frame.size.width/2.0, , , );
[self presentViewController:tipVC animated:YES completion:nil];
需要遵守的协议 UIPopoverPresentationControllerDelegate
#pragma mark - popViewController 的代理方法,实现该方法才能够局部弹出控制器
-(UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller{ return UIModalPresentationNone;
}