问题标签 [uidynamicanimator]

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

ios - UIDynamicsAnimator causes error after coming back from main menu

I have two view controllers-- one is a main menu, the other is the game. The game has a box that drops, and if the user doesn't catch it, it falls off screen and resets at its original position at the top.

The app loads onto the main menu, and the first time I go to play, it works perfectly. I can play as many rounds as I want without problems. However, if I return to the main menu (modal segue) and then go back to the game, as soon as I try to start the animation again, it gives me an error saying that the box "should be a descendant of reference view in UIDynamicAnimator". I've included the code for this particular section below.

I've searched for hours and can't figure out why this is happening. Can I completely refresh the view controller so that it works the same way as it does the first time? Should I change my referenceview parameter in UIDynamicAnimator? I'm at a loss. Someone please help!!

(I should mention the above code is in an IBAction, but I have also tried adding it in viewDidLoad and that didn't help either....)

Also, the official error that I'm getting is

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'View item (UIImageView: 0x7ffb11d9efd0; frame = (75 40; 70 70); hidden = YES; autoresize = RM+BM; userInteractionEnabled = NO; layer = CALayer: 0x7ffb11d9faa0) should be a descendant of reference view in UIDynamicAnimator: 0x7ffb11da8120 (0.000000s) in UIView: 0x7ffb11da84c0 {{0, 0}, {375, 667}}

Here is all the code that has to do with initializing "box":

Essentially, the box drops, spins downward, and if it falls off the screen, the animation stops and the box is replaced at it's original position at the top until the user hits the button again.

*****EDIT: I have some more information that may be helpful. When I play the game, go back to main menu, and come back again, doing anything to the box programmatically causes the app to crash. I tried adding a tag in ViewDidLoad, and that caused it to crash. It has to be something with the box, but I just can't figure out what.

0 投票
2 回答
2263 浏览

ios - Animating with UIDynamicAnimator when Autolayout is in play

I have a ViewController that has been configured in InterfaceBuilder to use AutoLayout for all of its subviews. Layout is working fine.

I want to make one of the subviews bounce using the cool gravity effects provided by UIDynamicAnimator. I didn't think that would work with AutoLayout, but I tried it and it does. It works quite well!

My question is, is this the expected behavior? Is it going to cause problems somewhere? Does Apple provide any guidance around combining AutoLayout and UIDynamicAnimators?

Here is the code, for anyone interested:

0 投票
2 回答
159 浏览

ios - 为什么我的 UIDynamicAnimator 类继承不能使用 addChildBehavior

我正在用斯坦福 CS193P 学习 ios,并在第 8 讲有问题

我创建了一个从 UIDynamicAnimator 继承的名为 DropItBehavior 的类,但我不能使用 UIDynamicAnimator 方法 addChildBehavior,xcode 警告如““DropItBehavior”没有可见的@interface 声明选择器“addChildBehavior””

这是.h文件

这是.m文件

0 投票
1 回答
1396 浏览

ios - Swift:从下到上的 UIDynamic 动画面板

我想构建一个简单的自定义视图,它使用 UIDynamicAnimator 从底部向上滑动。

当应用程序加载时,我使用以下方法从屏幕上偏移视图:

为了设想这一点,我希望视图显示为:

我已经设置了手势识别器来检测我何时向上和向下滑动(向上显示,向下关闭),但是现在视图从屏幕上反弹,我似乎永远无法恢复。

使用我的动画师,我使用以下代码

在展示其余代码之前,我想我应该讨论一下我的常量。矢量数学不是我的强项,所以这可能是所有这一切都出错的唯一原因。我将值设置为负值,open因为我想将视图动画返回到屏幕上,这意味着向上动画,因此我假设我需要负重力。

我将boundaryY设置为面板的高度,因为我只想将它动画到屏幕上到窗口的高度,目前它飞离顶部(当我调试屏幕高度= 667和panelHeight = 333.5所以我不'不明白为什么它超过了那个标记)

我主要关心碰撞检测,因为我相信这是导致视图旋转并从屏幕上飞出的原因,我该如何解决这个问题?

0 投票
1 回答
468 浏览

ios - UIDynamicAnimator 停止对重力变化做出反应

我遇到了与https://stackoverflow.com/questions/28275004/uidynamicanimator-stop-reacting-to-uigravitybehavior中所述完全相同的问题。我也无法更好地解释它。

有谁知道为什么 UIDynamicAnimator 会突然停止对UIGravityBehavior附加到它们的对象/项目进行动画处理?

编辑

我正在运行Big Nerd Ranch的示例

我修改了示例,因此只有两个立方体,以便更轻松地重现错误。立方体正在下落并且对重力反应很好,但是如果你倾斜手机,使立方体最终在角落里,相互接触,那么它会停止任何运动,因此不再对重力行为做出反应。

我也想知道,这是否是一个 Swift 问题。也许我应该尝试在 Obj-C 中实现这一点,看看错误是否仍然存在。

这是示例:

编辑2

我只是注意到他们不必互相接触就可以停止响应 UIGravityBehavior。

编辑3

好的,似乎是 Swift 中的一个错误。我在 ObjC 中实现了相同的功能,没有任何问题。

0 投票
2 回答
503 浏览

ios - UIView 像 iOS 控制中心一样弹跳

我正在尝试制作一个具有类似 iOS 控制中心行为的 UIView。我当前的代码能够上拉显示和下拉隐藏。

演示: 我的程序 iOS 控制中心

问题1: 任何人都可以举一些例子或指导我如何做到这一点?

问题2(这里有一些愚蠢的问题): iOS控制中心是如何实现的?是使用 UIViewController 还是 UIView?

0 投票
0 回答
253 浏览

ios - UIscrollView、Autolayout 和 UIDynamicAnimator - 视图闪烁

我有一个带有两个视图的滚动视图。我希望他们有重力附着在他们身上

视图是使用自动布局创建和添加的。

我可以让重力正常工作,但是当我滚动视图时,它们会重置到原始位置,然后闪回到它们应该在的位置。

两个视图下方正在下降,当我拉动滚动视图时,您可以看到它们闪回到那里的起始位置一秒钟。 怎么了

编辑:据我所知,这与自动布局和滚动视图有关。如果我使用框架,那很好。

0 投票
0 回答
42 浏览

ios - 带有 UIDynamicItemBehavior 的方法在本地工作,但在从另一个类调用时不起作用

当我在本地调用此方法时,动画效果很好。但是,当从另一个类调用它时,我收到一个 Thread 1 SIGABRT 错误:“由于未捕获的异常 'NSInvalidArgumentException',正在终止应用程序,原因:'*** -[__NSPlaceholderArray initWithObjects:count:]:尝试从对象插入 nil 对象[ 0]'"

实际的方法调用是有效的,因为我用 NSLog 替换了该方法的内容,它运行良好。从我的测试来看,它似乎与 initWithItems:@[_orange_ball] 特别相关

为什么它会在本地工作,但从另一个类调用时却不行?我想我错过了一些明显的东西。

0 投票
2 回答
2011 浏览

ios - UIDynamicAnimator + 自定义 UICollectionViewLayout 导致永久圆周运动

我一直在复制 2013 WWDC Session 217 “Exploring Scroll Views on iOS 7”。我正在使用 Xcode 7 beta 2,我的项目只有 iOS 9。

我正在尝试以类似于第 217 节中介绍的方式使用 a UIDynamicAnimatorwith my来模仿 Messages.app 的感觉。UICollectionViewLayoutUICollectionViewLayout是自定义的,出于某种原因,我的细胞似乎在我的项目中以圆周运动反弹。

这是我的自定义布局代码。

这里可能发生了什么导致这种圆周运动?我只是改变我的UIAttachmentAttributes中心的 Y 轴属性。

我在这里想念什么?(在其他项目中尝试过这种精确的布局,似乎可行)。

编辑:

我上传了一个示例项目(已删除),自定义集合视图布局类被称为VVSpringCollectionViewFlowLayout.m,因为我最近有很多工作要做,所以我没有太多时间自己研究这个。

当示例项目运行时(Xcode 7 beta 或更高版本),系统会提示您使用滑块,一直向右拖动以可视化 Collection View Cells。

0 投票
1 回答
744 浏览

ios - UICollisionBehavior 边界不起作用

我在导航控制器中有一个视图。

然后我在这个视图中添加一个子视图并偏移它的原始高度,使其只覆盖屏幕的一半(另一半溢出屏幕底部)。我希望能够向上拖动这个视图,但是当它到达导航栏的底部时它会停止。

我正在使用 aUIPanGestureRecognizer来处理视图的拖动,这可以正常工作,但它似乎不会停在边界处。

这是我正在使用的代码:

但是,当我向上拖动覆盖视图时,它不会与任何边界交互,它只是直接穿过。我究竟做错了什么?是否可以使用边界来阻止用户以这种方式拖动的视图?