问题标签 [uimodalpresentationstyle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
88 浏览

ios - UIModalPresentationCustom 样式在旋转时更改视图宽度

我有一个使用 UIModalPresentationCustom 呈现的模式。我在 animateTransition 方法中将“to”视图控制器的视图框架设置为 300 像素宽。当我呈现模态时,宽度很好,但是当我旋转屏幕时,宽度会改变。是否有我可以锁定的属性或委托方法可以覆盖修改后的宽度?

0 投票
0 回答
72 浏览

ios - 如何使用 UIModalPresentationCustom 在模态视图后面添加叠加层

我是 UIModalPresentationPageSheet 在我的应用程序中呈现模式。我需要更多的自定义,所以我转而使用 UIModalPresentationCustom。正如所料,这种风格是非常简单的,但我想知道是否有一个容易在模态窗口后面添加一个覆盖,就像你免费获得的 UIModalPresentationPageSheet 一样?是否有我可以锁定的属性或方法,或者我是否需要将另一个 UIView 添加到容器视图?

0 投票
1 回答
511 浏览

uitableview - 在 iOS8 中使用 ModalPresentationStyle OverCurrentContext 时 ScrollsToTop 不起作用

当呈现具有like orUIScrollView子类或子类的模态视图控制器并使用呈现的控制器时,当状态栏被点击时,滚动视图不会滚动到顶部,这种行为发生在而不是在.UIScrollViewUITableViewUICollectionViewUIModalPresentationStyleOverCurrentContextiOS8iOS7

0 投票
0 回答
131 浏览

ios - 使用 popover 时移除背景以查看底层视图控制器

如果您想以模态方式呈现视图控制器但继续查看底层视图控制器,您可以将 更改UIModalPresentationStyle为 Over Full Screen,然后将视图设置为backgroundColorclearColor具有较低 alpha 值的颜色。默认的全屏显示会导致底层控制器消失,因此您会在下面看到黑色,除非您使用 Over Full Screen 或 Over Current Context。

现在我想改用自适应 Popover 演示样式,如果在 iPhone 6 Plus 上以横向运行,这将导致视图控制器在 iPhone 上以纵向或表单形式全屏呈现。但我想保留“全屏”风格——我希望能够通过新的视图控制器看到底层的视图控制器。如果默认情况下它会消失因此下面是黑色的,那如何实现呢?

0 投票
1 回答
3815 浏览

ios - 如何将 modalPresentationCapturesStatusBarAppearance = NO 与自定义 UIPresentationController 一起使用?

我有一个自定义 UIPresentationController 并覆盖 frameOfPresentedViewInContainerView 以进行自定义 viewController 演示。一切正常,除了状态栏。

我根本不希望状态栏改变外观——它应该保持原来的样子。现在Apple文档:https ://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/#//apple_ref/occ/instp/UIViewController/modalPresentationCapturesStatusBarAppearance说如果modalPresentationStyle不是UIModalPresentationFullScreen或modalPresentationCapturesStatusBarAppearance是NO,我应该没问题,状态栏不应该改变。

使用此代码:

我可以看到调用了 prefersStatusBarHidden,即使 modalPresentationCapturesStatusBarAppearance 为 NO(显示为 0)并且 modalPresentationStyle 为 UIModalPresentationCustom(显示为 4)。

显然,这就是在呈现 viewController 时状态栏发生变化的原因。

但为什么?

我对此的想法是,iOS 认为 viewController 以全屏显示,即使它不是。

我发现了 UIPresentationController 的属性 shouldPresentInFullscreen——它默认返回 YES。返回 NO 根本没有帮助,所以我不明白该属性甚至做了什么......它实际上没有任何效果。这同样适用于presentationStyle 属性——更改它时我看不到任何效果。我本来希望将presentationStyle 属性“重定向”到viewControllers modalPresentationStyle 属性,但它仍然保留在UIModalPresentationCustom,它必须首先启动自定义演示。

所以,我的问题是:有人知道如何使用自定义 UIPresentationController 保持状态栏不变——有人可以解释一下 shouldPresentInFullscreen 和presentationStyle 属性吗?

谢谢!:)

0 投票
1 回答
508 浏览

uimodalpresentationstyle - 使用在当前上下文中呈现的模态视图控制器时无法展开 Segue

这是关于最新版本的 Xcode 6 和 iOS 8.4。

我有一组三个视图控制器,它们VC2&VC3以模态方式呈现:

VC1-> VC2->VC3

每个 segue 都以.OverCurrentContext. 我正在使用这种演示风格,因为两者VC2都有VC3一个UIVisualEffectView模糊的背景,让下面的视图巧妙地显示出来。

我的问题是,我创建的展开segue既不会展开,也VC2不会VC3以. 但是,当我将演示文稿样式更改回它时,它可以工作。VC1.OverCurrentContext.Defatult

我真的更喜欢使用.OverCurrentContext,因为在关闭时必须使用dismissViewController:animated:completion会导致两个视图控制器的第二个不需要的动画。我希望能够解雇VC3并立即看到VC1而不会看到VC2动画之间的解雇。另外,我不喜欢使用presentingViewController.presentingViewController.dismissViewController:animated:completion,因为它也会导致在被解雇VC2后解雇的不需要的动画VC3

关于如何解决这个问题的任何建议?

0 投票
2 回答
999 浏览

ios - UIModalPresentationStyle.CurrentContext Swift iOS 7

我想使用 iOS 7 显示一个视图 -PresentedView在另一个视图Background View上。在我的应用程序中,我正在使用UITabBArController,所以在运行时我不知道哪个视图将是背景视图(可能是任何标签栏项目)。下面是结构:

需要这样的东西:

在此处输入图像描述

当应用程序加载时,我在TabItem1 - FirstUIViewController. 当我点击 时TabItem3,我想出ThirdUIViewController现在 Top onFirstUIViewController并且“FirstUIViewController”应该出现在背景中,并且没有启用用户交互。

到目前为止我做了什么:

  1. 由于UIViewControllers添加为Relationship ControllersTabBar Item`UITabBarController 中显示,我添加了一个从 tabbarcontroller 到 ThridViewController 的 segue。

  2. 将此 Segue 的 PresentationStyle 更改为 UIModalPresentationStyle.CurrentContext 并进行了以下修改

    /li>

什么也没发生,我只看到白色背景的“ThridViewController”

  1. 我尝试了手动编码方法:

    /li>

不用找了。新视图会覆盖之前的视图。如果我添加这个overlayController.view.backgroundColor = UIColor.clearColor(),我会看到一半是黑色的,一半是包含我的新视图的

问题点:

  1. 我应该在哪里编写代码来初始化/调用 ThirdViewController 以显示在当前视图的顶部?
  2. 如何修复黑屏问题并使其在 iOS 7 上运行?

我正在使用 Xcode 7 并在 iOS7 上运行。请帮忙。工作代码片段将不胜感激。不要发布其他堆栈溢出帖子作为答案,除非代码有效并且您自己尝试过。

更新: - 使用这种方法,我得到一个黑屏

0 投票
0 回答
660 浏览

ios - 使用 UIModalPresentationOverFullScreen 与 UIModalPresentationFullScreen 时的性能问题

我有一个非常复杂但静态的ViewController A ,它在上面显示ViewController B。B完全覆盖A并且是不透明的。

我注意到,如果我使用我的 FPS 呈现BUIModalPresentationOverFullScreen会下降到 30 左右,但如果我使用UIModalPresentationFullScreenFPS 会更接近所需的 60。我知道由于B在A上呈现不透明,因此使用前一种样式没有意义,我很想知道为什么渲染引擎仍在苦苦挣扎,因为据它所知,它不需要渲染/更新A

0 投票
1 回答
11385 浏览

ios - 'UIPopoverController' 已弃用:首先在 iOS 9.0 中弃用

我开发了一个显示错误的项目:

'UIPopoverController' 已弃用:首先在 iOS 9.0 中弃用 - UIPopoverController 已弃用。弹出框现在实现为 UIViewController 演示文稿。使用 UIModalPresentationPopover 和 UIPopoverPresentationController 的模态表示样式。

我的编码是:

视图控制器.h:

视图控制器.m:

我无法正确参考 UiModalPresentationPopover。有人可以帮我解决这个错误。任何帮助深表感谢。谢谢你。

0 投票
1 回答
1524 浏览

ios - 解除双模态视图控制器的父视图控制器

我有当前的设置,其中->是模态演示(presentViewController()):

我目前在里面ViewController E。我想关闭所有模态呈现的视图控制器,以便我可以回到ViewController A. 似乎无论我尝试什么ViewController E,(dismissViewController()使用self, parentViewController, presentViewController, navigationController)我都可以轻松解雇ViewController E但不能解雇ViewController B及其所有子视图控制器。在我看来,当ViewController E被解雇时,我已经失去了对它的所有引用,ViewController D(导航控制器的子视图控制器NavigationController B)仍然可见。

非常感谢您解除所有子视图控制器的ViewController E任何帮助。NavigationController B