问题标签 [uipresentationcontroller]

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 投票
1 回答
564 浏览

ios - 自定义 UIModalPresentationStyle.custom:为什么会调用 presentationController(forPresented 而不是 animationController(forPresented?

我正在使用UIModalPresentationStyle.custom.

在我UIViewControllerTransitioningDelegate为什么会调用此方法:

但是这些函数都没有被调用:

0 投票
1 回答
336 浏览

ios - UIPresentation 控制器 - 从后台返回后布局出错

我已经实现了从 ViewController A(嵌入在 UINavigationController 中)到 ViewController B 的自定义转换。

过渡从底部“滑动”VC B,直到它占用垂直屏幕大小的 1/2 - 使用自定义UIViewControllerAnimatedTransitioning对象。自定义演示文稿还会移动演示文稿 VC A,因此它使用animateAlongsideTransition(in:animation:compeltion)call in presentationWillBegin()override 的 custom与传入的 VC B 一起向上滑动UIPresentationContorller。考虑分屏,显示 VC 的下 1/2 在顶部,显示的 VC 在底部。

除了我似乎无法解决的一个烦人的情况外,一切都按预期工作:

  • VC A 有一些子视图(按钮),这些子视图(按钮)被限制(界面构建器中的自动布局)到 VC A 的顶部布局指南(同样,VC A 在 NavC 中)。
  • 当我呈现模态视图 (B) 时,这些子视图作为过渡的一部分被向上推(很棒),当 VC B 被关闭时(很棒)又被向下推。
  • 但是,当 VC B 出现时,应用程序被置于后台,然后回到前台,VC A 的子视图显示在屏幕顶部 - 即在 VC A 的视图中间而不是顶部(坏)。当 VC B 被解散时,他们停留在中间(坏的)——只有通过离开 VC A 并返回来启动完整的 VC“重绘”才能解决问题。

我知道问题出在回到前台时重新校准顶部布局指南,但在显示视图之前无法弄清楚如何修复它。

一种方法是将子视图的约束设置为“超级视图顶部”而不是“顶部布局指南”,但这会超越自动布局作为 NavC 的一部分。

  • 在这种情况下,VC AviewWillAppear/viewWillDisappear永远不会被调用(因为 VC A 的观点从未被完全驳回)。
  • containerViewWillLayoutSubviews/containerViewDidLayoutSubviewsUIPresentationController在这种情况下也没有调用的自定义

任何想法都非常感谢。

iOS 10,Xcode 8.3

0 投票
1 回答
297 浏览

ios - 试图模仿 Mail.app 撰写动画,使图层保持在视图中

我已经尝试了一段时间,但我无法弄清楚如何创建一个撰写动画,iOS 10+当您可以将新撰写的电子邮件向下拖动时,它会停留在底部并且应用程序的其余部分可以正常访问,然后当您点击它,它会重新显示。

我创建了一个示例项目,其中我有一个UIViewController展示另一个UIViewController其中有一个触发状态分析器UIPanGestureRecognizer的示例项目。UINavigationControllerpangesture

我确实可以拖动以将其关闭,但我找不到保持框架的方法。

Bellow有一个我正在尝试完成的打印屏幕,然后是我使用的代码到我被困在的地方。

在此处输入图像描述

UIViewController那是presentingViewController

UIViewController2 那是presentedViewController

这是一个包含自定义演示文稿的 Helper 文件:

这种期望的效果也可以在其他应用程序中看到,例如Music appStack Exchange/Overflow iOS App

有没有人暗示如何做到这一点?我觉得我真的很接近实现它,但我找不到一种方法来保持dismissed屏幕上的图层。

上面的项目可以在这里找到

非常感谢。问候。

0 投票
2 回答
496 浏览

swift - 了解 crashlytics UIKit 错误

我无法理解收到的 UIKit 崩溃报告:

有没有办法找出是哪一行代码导致了这种情况:

错误本身是:

崩溃:com.apple.main-thread

编辑:

根据下面的答案,我想知道是否建议使用:

并且总是打电话

在我的应用程序中我目前有 self.dismiss(animated: true, completion: nil) 的任何地方?

这是必要的检查还是我如何确定 self.dismiss 有问题的地方?

一些示例解雇:

其中 displayActivityAlertWithCompletion2 看起来像:

编辑 2:

我的应用程序中的一些示例弹出框方法:

并搜索弹出:

0 投票
0 回答
427 浏览

ios - UIPresentationController In-call status bar issue

I have a screen where I need to present a UIViewController with custom animation, so I'm using UIPresentationController for a custom presentation.

Everything works fine until the user gets a call, the In-call status bar shifts the UITranstionView by 20 pixels, which I'm supposed to reset to zero after the call gets disconnected.

enter image description here

I want to know if there is any way to handle this using UIViewControllerAnimatedTransitioning, UIViewControllerTransitioningDelegate.

Or any other way to fix this.

Update

func animateTransition(using transitionContext:

0 投票
1 回答
842 浏览

ios - 平移手势一开始,交互式滑动菜单就完成[Swift]

我正在尝试实现一个滑动菜单,该菜单可以通过水平平移以交互方式解除,与 Uber 和 Google 应用程序中的菜单相同。一切都按预期进行,只是一旦我开始水平平移,就会在不跟随我的手指的情况下完成关闭。非常感谢任何有关问题所在的建议。

我进行了子类UIPresentationController化以定义我的菜单控制器的呈现宽度。我有自定义演示文稿动画师和解雇动画师,以及UIViewControllerTransitioningDelegate将它们全部返回到UIKit. 我还在gestureRecognizerShouldBegin(_ gestureRecognizer:)我的菜单控制器中实现了允许垂直滚动的方法。

在此处输入图像描述

SlideDismissAnimator

滑动交互控制器

菜单控制器

0 投票
4 回答
1511 浏览

ios - UIPresentationController 崩溃只是指向 AppDelegate

截图:

在此处输入图像描述


在此处输入图像描述我遇到了很多这样的崩溃,但问题是我只是被指向我的 appDelegate 第一行。我不知道在哪里寻找问题。我可以从以下崩溃报告中开始调查的任何想法?

更新:

基于以下几点:

应用程序在 runTransitionForCurrentState 上崩溃,但不知道原因

我正在寻找潜在的原因,并且想知道以下代码。

在进行同步过程时,我有以下函数用于显示带有活动指示器的视图。

然后我像这样使用这个函数:

这会是 UIKit 问题的潜在原因吗?

0 投票
0 回答
492 浏览

uiviewcontroller - 将自动布局与 UIPresentationController 一起使用

我正在创建子类UIPresentationController以创建弹出窗口的自定义演示/过渡UIViewController。弹出视图本身应该被限制在呈现视图控制器的框架中。我可以通过手动框架计算来做到这一点,但在我看来,这将非常乏味且容易出错。

查看 APIUIPresentationController看起来它强烈地强制使用CGSize's 和CGRect's 并坚持让你混合和匹配 '准自动布局' 方法systemlayoutSizeFitting和其他方法,完全令人困惑。我不知道需要覆盖哪些方法,何时存在视图,何时添加它们,哪些覆盖返回值优先于其他返回值。它基本上是一场噩梦。

如果有的话,在这个 API 中使用传统的基于约束的布局的最简单方法是什么?

0 投票
0 回答
39 浏览

ios - 如何阻止呈现的视图控制器被解雇

我以编程方式呈现视图控制器,但是当设备旋转时,它会自动关闭。

我不知道为什么会发生,我该如何解决

这是代码

我将代码保存在 appdelegate

任何解决此问题的帮助表示赞赏

0 投票
1 回答
244 浏览

ios - iOS:演示控制器帧大小随设备方向变化

如何在设备方向更改时保持演示控制器高度相同。下面是代码:

这是代码示例