问题标签 [uimodalpresentationcustom]

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 回答
458 浏览

ios - 通过 UIModalPresentationCustom 呈现的 iOS 8 视图控制器本身不能呈现任何视图控制器吗?也无法解散

在 iOS 7 中,一切都按预期工作。在没有代码更改的情况下,在 iOS 8 中,我的菜单视图控制器本身不能呈现任何其他视图控制器,并在我尝试关闭它时将错误打印到日志中。当我尝试在堆栈上呈现更多视图控制器时,从使用我的自定义转换呈现的 VC 中,我尝试并且根本没有发生任何事情,就好像我在 nil 上调用方法一样,而我不是。这是我如何呈现它:

然后,当我尝试从呈现的菜单 vc 中呈现更多视图控制器时,iOS 8 中没有任何反应!但是,当我尝试关闭以自定义方式呈现的菜单时,我在控制台/日志中得到了这个:

有任何想法吗?在使用自定义转换以模态方式呈现视图控制器时,iOS 7 和 8 之间有什么不同?我要解决的主要问题是我希望我的菜单能够像在 iOS 7 中一直能够做到的那样推动其他视图控制器。我还需要弄清楚如何在没有 VC 的情况下关闭菜单错误!

有任何想法吗?

0 投票
1 回答
205 浏览

uitableview - 修改 UIModalPresentationCustom 的边界后,UITableView 没有交互

基本上,我试图呈现一个具有特定大小和位置的自定义模式视图,因为我能够通过 iOS 7 上的弹出窗口来管理它。但在 iOS 上,它们似乎改变了一些东西。

我设法通过以下方式实现这一目标:

介绍:

在 UpViewController.m 中:

我的问题是在我的模态视图出现之后。我们无法与已添加到视图中的 UITableView 进行交互。有人遇到过这个问题吗?

0 投票
2 回答
3815 浏览

ios - 自定义交互式演示转换

我正在尝试创建一个自定义视图控制器容器,它将在屏幕底部显示一个抽屉,如 Apple 邮件或音乐应用程序,我希望用户能够点击它以将其转换为全屏,或以交互方式向上滑动以显示内容。

在此处输入图像描述

我让抽屉工作,使用 aUIPanGestureRecognizer来滑动它。我可以通过将内容控制器添加为子控制器、将内容视图添加到层​​次结构viewWillAppear:viewDidAppear:在适当的时候调用来实现这一点。

但我希望允许内容视图控制器在滑动旁边进行动画处理(例如,任何动画viewWillAppear:,如交互式弹出),因此我正在查看自定义模式演示文稿和UIPercentDrivenInteractiveTransition,但我碰壁了,我不明白为什么这正在发生。我已经设置了一个过渡委托,返回一个自定义动画控制器和一个作为UIPercentDrivenInteractiveTransition对象的交互控制器。

我的抽屉是容器控制器视图层次结构的一部分,自然我希望内容控制器的视图成为抽屉的子视图。但是在调用 时presentViewController:animated:completion:,会在 中添加一个新的UITransitionView子视图UIWindow,据说应该在哪里发生过渡动画。但这会杀死我UIPanGestureRecognizer,并且用户无法执行滑动以打开抽屉。

我尝试创建自定义UIPresentationController和其他方法来控制containerView应该在层次结构中的位置,但我无法更改行为。

我正在尝试做正确的事情吗?我错过了什么?


如果有人感兴趣,这是我的框架:LNPopupController

0 投票
0 回答
88 浏览

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

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

0 投票
0 回答
72 浏览

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

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

0 投票
2 回答
749 浏览

ios - 自定义模态演示中的 UIBlurEffect

我目前在屏幕的三分之一上展示一个视图控制器,带有一个自定义UIPresentationController. 在我的 中UIPresentationController,我将其包裹presentedViewController在几个视图中以获得圆角和阴影(就像在 Apple 的自定义过渡示例应用程序中一样)。我最近在层次结构中添加了UIVisualEffectViewa ,但它显示得很奇怪。视图现在是半透明的,但不是模糊的。UIBlurEffectpresentedViewController

我认为这是因为正确应用了模糊效果,但是因为它是模态演示,所以看不到后面的视图,因此无法对其进行模糊处理。有什么想法吗?这是相关的代码 override func presentationTransitionWillBegin()

0 投票
1 回答
439 浏览

ios - 为什么 UIModalPresentationPageSheet 不工作......它总是全屏

这是将视图控制器呈现为表单的代码片段。它不起作用

它总是以全屏形式出现

我什至尝试过...首选内容大小不起作用...

0 投票
1 回答
1469 浏览

ios - 我的子视图不使用视图控制器进行动画处理

我有一个简单的示例项目,其中我正在玩一些视图控制器自定义动画,以集成到一个更大的项目中,但我发现它们存在一些问题。

我有 2 个简单的视图控制器,第一个带有一个按钮来呈现第二个,带有自定义动画;第二个有一些标签和一个关闭按钮,可以将视图控制器动画“离开场景”

当我呈现视图控制器时,在我单击呈现按钮后,呈现的视图控制器的子视图会在视图控制器动画之前出现在屏幕上,但是当我关闭 VC 时,所有子视图都与被解雇的视图控制器。

在我的视图控制器 2(呈现)上,我有默认自动布局的视图(重置为建议的约束)

我找不到为什么子视图没有像我预期的那样在视图控制器内部动画的理由。

下面是一个显示正在发生的事情的 gif 和源代码:

动图

代码:视图控制器 1(呈现 VC)

代码:视图控制器 2(呈现 VC)

代码:CustomPresentationController

代码:动画师类

0 投票
0 回答
875 浏览

ios - 如何使用自定义模式表示样式覆盖视图控制器的特征集合?

我的应用程序中的视图控制器有一个自定义模态演示样式,它模仿表单,除了一些额外的视觉触摸。像这样呈现的视图控制器会根据其特征集合的属性(特别是大小类)做出一些布局决策。当在 iPad 上使用这种“假表单”表示时,呈现的视图控制器会继承设备的特征集合并相应地布局。但它们确实应该是不同的(即至少水平紧凑)。

如何覆盖以自定义模式呈现样式(通过和朋友)呈现的视图控制器的特征UIViewControllerTransitioningDelegate集合UIViewControllerAnimatedTransitioning

注意:我遇到的特定布局问题是UITabBarController使用 iOS 11 的新布局中的标签栏,标签项目标题位于图像旁边,而它确实应该使用经典/iPhone 纵向布局(标题位于图像下方)。我猜这是根据视图控制器的大小类完成的。

0 投票
1 回答
635 浏览

ios - 使用自定义模态演示时如何更新 frameOfPresentedViewInContainerView?

我正在使用自定义 UIPresentationController 以模态方式呈现视图。呈现视图后,呈现视图中的第一个文本字段成为第一响应者,并且键盘出现。为了确保视图仍然可见,我将其向上移动。但是,当我这样做时,frameOfPresentedViewInContainerView它不再与视图的实际框架匹配。因此,当我点击视图时,它会被关闭,因为 backgroundView 上有一个 tapGestureRecogziner,它位于 presentingView 的顶部。如何通知presentingControllerpresentingView的frame/position发生了变化?

在 UIPresentationController 中:

以模态方式呈现视图:

键盘出现时的动画(在呈现的视图中):