将UIViewController呈现为UIModalPresentationFormSheet和U IModalPresentationOverCurrentContext
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将UIViewController呈现为UIModalPresentationFormSheet和U IModalPresentationOverCurrentContext相关的知识,希望对你有一定的参考价值。
如何在当前上下文中呈现具有模糊背景的UITableViewController作为表单?
- (void)viewDidLoad {
self.tableView.backgroundColor = [UIColor clearColor];
self.tableView.backgroundView = [[UIVisualEffectView alloc] initWithEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]];
}
在使用UIModalPresentationOverCurrentContext
设置的iPhone上,它可以全屏工作
但对于iPad,如果我想将其显示为表单,那么我需要将modalPresentationStyle
设置为UIModalPresentationFormSheet
。
我如何设置两者?
答案
我发现我需要使用UIModalPresentationPopover
for modalPresentationStyle
然后你可以将视图控制器popoverPresentationColor
设置为clearColor
。
FAGalleryTableViewController *vc = (FAGalleryTableViewController *)[segue destinationViewController];
if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ) {
vc.modalPresentationStyle = UIModalPresentationPopover;
vc.popoverPresentationController.sourceView = _storeButton;
vc.popoverPresentationController.backgroundColor = [UIColor clearColor];
vc.popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionDown;
vc.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
}
另一答案
经过如此多的搜索,这对我来说在ios10 +上起作用了
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){
//IPAD
CamVC *destination = segue.destinationViewController;
[destination setModalPresentationStyle:UIModalPresentationFullScreen];
[destination setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
}else{
// IPHONE
CamVC *destination = segue.destinationViewController;
destination.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;
destination.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
}
以上是关于将UIViewController呈现为UIModalPresentationFormSheet和U IModalPresentationOverCurrentContext的主要内容,如果未能解决你的问题,请参考以下文章
从 UIHostingViewController 呈现 UIViewController
如何在将 UIViewController 呈现给自定义时更改默认转换
推送后视图上的按钮将不起作用,然后呈现一个 UIViewController