關(guān)于iphone實現(xiàn)popover的效果,網(wǎng)上大多資料都是利用別人寫好的庫來實現(xiàn)。其實ios8之后有了新方法UIPopoverPresentationController弧可,可以直接實現(xiàn)的嘁字。
UIPresentationController管理了所有的UIViewController的presentation。UIPopoverPresentationController是UIPresentationController的一個子類掸掸,替代了之前的UIPopoverController氯庆,它無需再判斷是iphone還是ipad,都會自動進(jìn)行適配扰付。用于ipad的效果不必多說堤撵,但在iphone上,會自動以modal的形式present出來view羽莺。這時只要告知代理不要適配实昨,就有了iphone自己的popover。
下面上代碼盐固。----<UIPopoverPresentationControllerDelegate>
- (void)TypeNumberBtnClick {
self.typeNumberVC = [[JGTypeNumberViewController alloc]init];
self.typeNumberVC.modalPresentationStyle = UIModalPresentationPopover;//帶anchor錨點(diǎn)的樣式
self.typeNumberVC.popoverPresentationController.sourceView = self.chooseTypeView.TypeNumberBtn;
//指定相對于Button具體位置
self.typeNumberVC.popoverPresentationController.sourceRect = self.chooseTypeView.TypeNumberBtn.bounds;
//箭頭的顯示方向(默認(rèn)指定Any枚舉值:自動找最優(yōu)的方向)
self.typeNumberVC.popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionAny;
//設(shè)置代理(iPhone需要;iPad不需要)
self.typeNumberVC.popoverPresentationController.delegate = self;
//3.顯示彈出控制器
[self presentViewController:self.typeNumberVC animated:YES completion:nil];
}
#pragma mark -- UIPresentationDelegate
- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller {
return UIModalPresentationNone;
}