将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

我如何设置两者?

答案

我发现我需要使用UIModalPresentationPopoverfor 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

如何将 UI 元素保留在 UIViewController 及其呈现的 ViewController 之上?

弹出 UIViewController

如何以模态方式呈现标准 UIViewController