问题标签 [custom-transition]

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

ios7 - 如何在方向更改后在 IOS 7 中的自定义过渡动画期间确定视图坐标?

我的问题的快速总结:

我正在使用 iOS 7 中的 View Controller Transitioning API 创建自定义转换,当点击时将 uicollectionview 中的单元格扩展为全屏视图,并在关闭时收缩回原始坐标。

类似于照片应用和 Facebook 所做的。

只要我保持在相同的方向呈现和关闭全屏视图,它在两个方向上都可以很好地工作。

如果我在关闭它之前在全屏视图中更改方向,它会失败。

一些细节:

我正在使用导航控制器从包含 collectionView 的 View1 到作为全屏视图的 View2。

View1 实现了 UINavigationControllerDelegate 协议,并且在 navigationController:animationControllerForOperation:fromViewController:toViewController: 方法中,我计算了当操作是“Push”时动画必须开始的坐标,同样,当操作时动画必须完成的坐标在返回执行动画的 UIViewControllerAnimatedTransitioning 类之前是一个“Pop”。

我通过以下方式计算 View1 坐标系中的开始和结束帧:

我检索选定的单元格:

我通过以下方式将单元格的框架转换为 View1 的坐标系:

当保持 Push 和 Pop 操作之间的旋转恒定时,此计算两次返回相同的坐标,结果是预期的结果。动画从单元格的帧开始,然后收缩到同一个单元格。

然而; 在 Push 和 Pop 操作之间旋转设备时,我得到不正确的结果。Pop 期间计算的坐标与 Push 期间完全相同。好像 View1 和 collectionView 还没有旋转。因此,如果设备没有旋转,动画将在单元格所在的位置结束。

如何计算所选单元格的坐标以说明 Pop 操作期间的旋转变化?

谢谢

0 投票
1 回答
859 浏览

ios - 推送的自定义过渡和流行的标准过渡

我有一个视图控制器,它在点击表格单元格时具有自定义推送转换,并在点击后栏按钮项时执行标准弹出转换。问题是当我尝试从前一个控制器转到同一个视图控制器时,应用程序崩溃了。以下是UINavigationControllerDelegate我正在实现的功能:

任何线索表示赞赏!

提前致谢。

0 投票
1 回答
1216 浏览

ios - 如何使自定义过渡表现得像在重力下坠落?

效果可以像animateTransition方法中的以下代码一样实现:

但是我如何使用重力和碰撞行为(UIGravityBehaviorUICollisionBehavior)来实现它?

一个更普遍的问题可能是“如何使用 来自UIDynamicAnimator定义 之间的转换UIViewControllers?”

0 投票
6 回答
14748 浏览

ios - 呈现一个透明的模态 UIViewController

我正在尝试自己制作一个自定义的 alertView(适用于 iOS7+),但我在 alertView 演示文稿中遇到了困难。

我有一个黑色背景的 UIViewController(alpha 设置为 0.25f),还有一个作为子视图的 alertView。

当我想显示 alertView 时,我以模态方式显示 viewController:

这是我的动画对象:

问题是:模态 VC 与背景中的呈现 VC 一样淡出,但是当动画结束时,呈现 VC 会从背景中移除。

如果我[transitionContext completeTransition:YES];改为调用,呈现的 VC 在后台,但模态 VC 在动画结束时被删除,所以我猜如果我们发送“否”,上下文会取消演示。

有没有办法将呈现的 VC 保持在后台,而不必对其进行快照并将其设置为模态 VC 视图的背景?

0 投票
3 回答
5893 浏览

objective-c - iOS 8 自定义视图控制器演示:在动画期间更改呈现的 VC 的大小

我正在编写一个在表格视图中包含一系列卡片的应用程序,类似于启用 Google Now 卡片时适用于 iOS 的 Google 应用程序的布局。当用户点击一张卡片时,应该有一个自定义的过渡到一个新的视图控制器,基本上卡片看起来更大,几乎填满了屏幕,并且上面有更多的细节。自定义转换本身应该看起来像卡片向上动画并增大大小,直到达到最终大小和位置,现在是持有卡片的新视图控制器。

我一直在尝试使用自定义视图控制器转换来解决这个问题。当卡片被点击时,我使用 启动一个自定义视图控制器转换UIModalPresentationCustom,并设置一个转换委托,它本身提供一个自定义动画师和一个自定义 UIPresentationController。在animateTransition:中,我将新视图控制器的视图添加到容器视图中,最初将框架设置为卡片的框架(因此看起来卡片仍然存在且未更改)。然后我尝试执行一个动画,其中呈现的视图的框架尺寸增加并改变位置,以便它移动到最终位置。

这是我上面描述的一些代码 - 我试图保持简短和甜蜜,但如果需要我可以提供更多信息:

过渡代表

自定义 UIPresentationController

我发现正在发生的是新视图在动画开始时立即自动设置为其最终大小,然后动画只是向上动画的新视图。使用断点,我注意到frameOfPresentedViewInContainerView在调用期间[transitionContext.containerView addSubview:toView]调用了它,这可能可以解释为什么会发生这种情况 -frameOfPresentedViewInContainerView根据 UIPresentationController 文档返回“在动画结束时分配给呈现视图的框架矩形”。

但是,我不确定如何进行,或者是否真的有可能。我见过的所有自定义视图控制器转换的示例都具有呈现的视图控制器的最终大小,并且在动画期间保持不变。有没有办法在动画期间通过改变呈现视图的大小来执行自定义视图控制器转换,还是我必须以不同的方式处理这个?

0 投票
2 回答
1557 浏览

ios - iOS和Objective C中的循环过渡(掩码)

我们想知道如何使用新按钮轻松构建一个圆形遮罩,将背景和过渡混合到新视图中?请参见此处的示例(观看红色星球被触发):在此处输入图像描述

0 投票
0 回答
181 浏览

uikit - 你可以混合 UIModalPresentationCurrentContext 和自定义转换吗?

我有一个带有用户界面的应用程序,其中包含两个项目,每个项目都是它自己的视图控制器。当您决定更改其中一项时,我使用presentViewController:animated:completion:withUIModalPresentationCurrentContext以模态方式仅在您正在更改的项目上显示一个选择器。由于视图控制器被设置为定义一个表示上下文,这不仅确保了选择器仅覆盖该视图控制器,而且它presentingViewController是该项目的那个,因此通过选择一个项目触发的展开转场通过该视图控制器也,改变项目。

这工作得很好,除了我想用自定义(希望是交互式的)过渡来做到这一点。为此,我尝试将选择器设置为transitioningDelegate实现UIViewControllerTransitioningDelegate. 但是,transitioningDelegate除非您使用UIModalPresentationCustom,否则将被忽略,它会忽略definesPresentationContext并从根视图控制器呈现,从而破坏了整个安排。

是否有某种方法可以呈现具有尊重表示上下文的自定义转换的模式视图控制器?还是我必须找到另一种方法来做到这一点?

0 投票
0 回答
228 浏览

ios7 - 来自自定义模式演示的视图控制器在 iOS7 中未自动旋转 - (BOOL) 不应正确调用自动旋转

我有一个视图控制器,我正在使用自定义模态演示文稿进行演示

按预期工作,但由于某种原因(在 iOS7 中),当设备方向改变时,呈现的视图控制器不会自动旋转。显然(呈现的视图控制器的)方法:

当设备方向改变时,不会在 iOS7 中调用。它仅在首次显示时调用一次。当我在 iOS8 上运行它时,它工作正常并且 shouldAutorotate 被正确调用。它很奇怪,因为它只能在肖像中呈现。如果我尝试以横向呈现视图,则它不起作用。我已经检查了我所有的父视图控制器,它们都设置正确,并且我在我的 plist 和我的应用程序委托方法中设置了所有方向。任何人都知道为什么这适用于 iOS8 而不是 iOS7?

0 投票
4 回答
7832 浏览

ios - 每个视图控制器(如 Twitter)中具有不同颜色的导航栏(不使用 setbartintcolor)

如下图所示,Twitter 为每个推送的视图控制器使用不同的导航栏颜色。

我几乎尝试了所有方法(setbackgroundimage、backgroundcolor、bartintcolor 等),但似乎没有任何效果。我认为 Twitter 使用自定义转换来模拟推送,因为在我看来,每个视图控制器都有自己的导航栏和自己的颜色。

在此处输入图像描述在此处输入图像描述

0 投票
0 回答
200 浏览

ios - 如何在 Foursquare iOS 应用程序中进行自定义 UINavigationBar 转换?

有谁知道如何自定义默认 UINavigationBar 过渡动画,就像他们为新的foursquare 应用程序所做的那样?第一个视图控制器的导航栏与视图控制器一起滑开,而不是默认的淡入效果。第二个视图控制器中的导航栏也似乎是透明的。

这是中间过渡的屏幕截图: