问题标签 [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 投票
0 回答
170 浏览

objective-c - 向上/向下拖动另一个 UIViewController iOS

我需要UIViewController在父控制器 90% 的顶部呈现一个孩子,让您看到背后的父控制器。此外,用户必须能够向下滑动呈现的控制器才能关闭。父母在不同的故事板中。

我试过这个,没有一个完整的工作解决方案。需要考虑父母Navigation bar并向下拖动子视图控制器。

我怎样才能实现这个用户体验?谢谢

0 投票
1 回答
362 浏览

ios - UIViewControllerTransitioningDelegate 在呈现后立即被取消初始化

我正在尝试使用UIPresentationController(和UIViewControllerTransitioningDelegate)以模态方式与自定义演示者一起呈现视图控制器。

问题是转换委托在被调用后立即被取消初始化animationController(presented:presenting:source:)这意味着animationController(dismissed:)永远不会被调用 - 因此,无法设置解雇动画。

最后,我希望能够定义解雇动画。我相信我上面解释的是问题的根源,但在网上找不到任何关于此的内容。


这是我的实现UIViewControllerTransitioningDelegate

这就是我设置过渡委托的方式:


当视图控制器被关闭时,视图总是默认被下推并消失。同样,animationController(dismissed:)从未被调用,我不知道为什么。

0 投票
1 回答
33 浏览

swift - 将编程创建的视图连接到 IB

按照这个答案,我设法将半模态呈现添加ViewControllerBViewControllerA. 但是,在示例中,ViewControllerA只是一个红色视图。我想将它连接到 IB 以便对其进行自定义。我尝试在类的 IB 中创建一个视图控制器ViewControllerB并将其视图之一连接到,@IBOutlet var menuView: UIView!而不是以menuView编程方式创建(如示例中所示)。但是,在作为子视图nil添加menuView到视图时发现。任何帮助都会很棒。谢谢!

0 投票
1 回答
811 浏览

ios - 为什么当另一个控制器出现时 UIPresentationController 的高度会改变?

UIPresentationController用来显示底部提示。有时presentationController可能会出现另一个控制器。并且当呈现的控制器被解除时,presentationController 的高度发生了变化。那么为什么它会改变,我该如何解决这个问题。代码如下:

我的代码如下: 在此处输入图像描述

presentationController高度在下图中是正确的:

在此处输入图像描述

让我感到困惑的是,当前视图控制器的高度发生了变化:

在此处输入图像描述

0 投票
0 回答
161 浏览

ios - 用于 iPad 的 UIViewController modalPresentationStyle 弹出框和用于 iPhone 的自定义

我使用创建了一个自定义演示文稿,UIPresentationController但我只想将此演示文稿用于水平紧凑布局,并且我想用弹出框替换我的自定义演示文稿以进行水平常规布局,并且当水平特征集合在紧凑和常规之间更新时,我想要我的演示文稿样式在两者之间更新。

UIPresentationController课堂上adaptivePresentationStyle: UIModalPresentationStyle,据我所知,它被用作水平紧凑布局的演示风格。我可以返回custom,但我不确定如何使用我的另一个UIPresentationController和设置UIViewControllerTransitioningDelegate

0 投票
2 回答
3099 浏览

ios - iOS 13 风格的 UIPresentationController 不依赖快照?

iOS 13 似乎使用了一种新UIPresentationController的呈现模式视图控制器,但它不依赖于为呈现视图控制器拍摄快照(就像大多数/所有库一样)。呈现视图控制器是“活动的”,并在模态视图控制器显示在透明/着色背景上方时继续显示动画/更改。

我可以通过CGAffineTransform在呈现视图控制器的视图上使用 a 轻松复制这一点(因为目的是为 iOS 10 / 11 / 12 等制作向后兼容的版本),但是在旋转设备时频繁地,呈现视图开始变形和增长似乎是因为系统更新了它frame,而有一个活动transform应用于它。

根据文档,frametransform应用到视图时未定义。鉴于系统似乎正在修改框架而不是我,我该如何解决这个问题而不会以我正在更新呈现视图的边界的 hacky 解决方案结束?我需要这个演示控制器保持通用,因为演示控制器可以是任何形状或形式,不一定是全屏视图。

这是我到目前为止所拥有的 - 它是一个简单的UIPresentationController子类,它似乎工作正常,但是旋转设备然后关闭呈现的视图控制器似乎会使呈现视图控制器的边界变形(变得太宽或缩小,取决于你是否在横向/纵向时呈现模态控制器)

和呈现动画控制器:

以及解雇动画控制器:

0 投票
1 回答
635 浏览

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

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

在 UIPresentationController 中:

以模态方式呈现视图:

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

0 投票
1 回答
2517 浏览

ios - UIPresentationController委托如何设置

在 iOS 13 中,关闭视图控制器时不会调用 viewWillAppear。作为一种解决方法,它提到了覆盖 UIAdaptivePresentationControllerDelegate 委托,但它对我不起作用。我究竟做错了什么?

接着,

0 投票
2 回答
654 浏览

ios - Swift Presenting Controller Dismiss Bar 指示器

对于你们大多数人来说,这应该是一个简单的问题。像所附照片一样呈现视图控制器现在在它们的顶部有一个栏(见红色箭头),表示用户可以向下滑动以关闭控制器。请帮助解决以下任何问题:

  • 这个图标的正确术语是什么?
  • 它是 swift 的 ui 工具/库的一部分还是只是一个 UIImage?
  • 有人可以提供一个关于如何实现的简单片段 - 也许它类似于下面的代码

请参阅我所指的图标的红色箭头

在此处输入图像描述

0 投票
1 回答
179 浏览

ios - UIPopoverPresentationControllerDelegate 协议的 2 个adaptivePresentationStyle 方法的区别

我正在使用一个弹出视图控制器,我不希望弹出窗口覆盖全屏(iOS 13)。我试图使用:

正在调用该方法,但显示的弹出框始终为全屏,即使指定了较小的首选内容大小。经过大量时间尝试许多不同的事情后,我发现还有另一种具有 2 个参数的方法并使用了它:

使用此方法使弹出屏幕成为指定的大小。任何人都知道为什么第二个会起作用而第一个不会。我有几个其他应用程序,我在其中使用第一个没有问题,什么给出?!