标签: uikit-dynamics

UITit Dynamics上的UIKit Dynamics

你可以在滚动时添加弹性单元格效果(如在iOS7上的Messages应用程序中)到UITableView?我已经看过它的一些例子UICollectionView,但是对于表格视图来说绝对没有.

这是不可能的,我应该将每个表视图更改为集合视图并重做所有单元格?

iphone uitableview ios uicollectionview uikit-dynamics

28
推荐指数
2
解决办法
5866
查看次数

实现UIKitDynamics以将视图拖离屏幕

我正在尝试找出与Jelly的应用程序类似的工具UIKit Dynamics(特别是向下滑动以在屏幕外拖动视图).

看动画:http://vimeo.com/83478484(@ 1:17)

我理解UIKit Dynamics是如何工作的,但是没有很好的物理背景,因此无法梳理不同的行为以获得理想的结果!

objective-c uikit ios ios7 uikit-dynamics

28
推荐指数
2
解决办法
9024
查看次数

限制UIAttachmentBehavior在UICollectionView内的垂直移动

我有一个水平UICollectionView的自定义UICollectionViewFlowLayout,UIAttachmentBehavior每个单元格都有一个设置,以便在向左和向右滚动时给它一个弹性的感觉.该行为具有以下属性:

attachmentBehavior.length = 1.0f;
attachmentBehavior.damping = 0.5f;
attachmentBehavior.frequency = 1.9f;
Run Code Online (Sandbox Code Playgroud)

将新单元格添加到集合视图时,它会添加到底部,然后使用a将其设置为其位置UIAttachmentBehavior.当然它会一点一点地反弹,直到它停留在它的位置上.一切都按预期工作到现在为止.

在此输入图像描述

在新添加的单元格停止之前向左或向右滚动集合视图时,我开始出现问题.这增加了单元格已经具有的向上和向下的左右弹性.这导致细胞中非常奇怪的圆周运动.

在此输入图像描述

我的问题是,是否可以在滚动集合视图时停止UIAttachmentBehavior的垂直运动?我已尝试过不同的方法,例如使用多个附件行为并在集合视图中禁用滚动,直到新添加的单元格停止,但它们中的任何一个似乎都不会停止此操作.

objective-c ios uicollectionview uikit-dynamics

17
推荐指数
1
解决办法
2143
查看次数

UICollisionBehavior - 视图通过边界

作为实现UICollisionBehaviour的一部分,我为屏幕边缘设置了边界.然后我添加了一些视图,最后将一个UIPanGestureRecognizer附加到其中一个.

现在我可以使用我的可拖动视图来推动较小的视图.

锤时间!

问题: 如果我将较小的视角转向并将其推向屏幕边缘,它最终将滑过边界并被困在另一侧.我用来击打和推动其他视图的"锤子视图"也会陷入界限.即它在屏幕的一侧被卡住/不可拖动.

我做了一个非常小的例子,看看当我的视图很少而且没有相互冲突的行为时我是否可以重现它,视图仍然可以通过边界.无论是UIDynamics都无法处理,或者(更有可能)我以某种方式配置错误.

下面的小例子有奇怪的行为:

class ViewController: UIViewController {

var animator: UIDynamicAnimator?
var collisionBehaviour: UICollisionBehavior?
var panBehaviour: UIAttachmentBehavior?

override func viewDidLoad() {
    super.viewDidLoad()
}

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    setup()
}

func setup() {
    //setup collisionBehaviour and animator
    collisionBehaviour = UICollisionBehavior()
    collisionBehaviour!.collisionMode = UICollisionBehaviorMode.allZeros
    animator = UIDynamicAnimator(referenceView: view)

    //add boundaries
    collisionBehaviour!.addBoundaryWithIdentifier("verticalMin", fromPoint: CGPointMake(0, 0), toPoint: CGPointMake(0, CGRectGetHeight(view.frame)))
    collisionBehaviour!.addBoundaryWithIdentifier("verticalMax", fromPoint: CGPointMake(CGRectGetMaxX(view.frame), 0), toPoint: CGPointMake(CGRectGetMaxX(view.frame), CGRectGetHeight(view.frame)))
    collisionBehaviour!.addBoundaryWithIdentifier("horizontalMin", fromPoint: CGPointMake(0, CGRectGetMaxY(view.frame)), toPoint: CGPointMake(CGRectGetMaxX(view.frame), CGRectGetMaxY(view.frame)))
    collisionBehaviour!.addBoundaryWithIdentifier("horizontalMax", fromPoint: CGPointMake(0, 0), toPoint: CGPointMake(CGRectGetMaxX(view.frame), 0)) …
Run Code Online (Sandbox Code Playgroud)

ios uicollisionbehavior uikit-dynamics swift ios8.1

16
推荐指数
1
解决办法
4012
查看次数

iOS 8上的UICollectionView自调整单元格将与UIDynamic flowLayout崩溃并重复调用_updateVisibleCellsNow

我正在尝试使用所谓的"自我调整单元",这意味着:

  • 设置estimatedItemSizeflowLayout
  • 超越控制preferredLayoutAttributesFittingAttributes细胞类

例如:UICollectionView具有自动布局的自定义单元格

我需要这样的动态效果:http://www.teehanlax.com/blog/implementing-a-bouncy-uicollectionviewlayout-with-uikit-dynamics/

没有UIDynamic,它工作正常,但我需要UIDynamic.正如我所看到的那样,它会调用prepareLayout并且layoutAttributesForElementsInRect直到死亡,将会有太多_updateVisibleCellsNow排队等待.

我不知道如何解决这个问题,如果你看到,请帮助我.或者,如果我以错误的方式使用这些技术,请告诉我.

ios uicollectionview uicollectionviewcell uicollectionviewlayout uikit-dynamics

14
推荐指数
1
解决办法
2694
查看次数

如何复制消息在iOS 7中弹跳气泡

当您在iOS 7中的消息应用程序中进行对话时,如果向上或向下滚动,您会注意到气泡以及发送消息时所说的文本将更多地反弹到位.

我试图在我自己的表视图中复制它,但我没有找到一种方法来做到这一点.

我假设它使用的是UIDynamics,但我不确定如何将其与滚动和内容弹跳联系起来.

任何帮助,将不胜感激

ios ios7 uikit-dynamics

13
推荐指数
2
解决办法
9440
查看次数

将[UICollectionView performBatchUpdates:]与具有UIDynamics的UICollectionViewFlowLayout一起使用

好的基本概述.我有一个UICollectionView我需要支持通过该performBatchUpdates:方法添加和删​​除项目.如果我使用标准UICollectionViewFlowLayout,它工作正常.

但是,当我尝试使用UICollectionViewFlowLayout由a驱动的时UIDynamicAnimator,我一打电话就会崩溃performBatchChanges.

在我的自定义UICollectionViewFlowLayout类中,prepareForCollectionViewUpdates:永远不会调用该方法.UICollectionViewFlowLayout我使用的自定义基于此示例.

崩溃后的控制台输出是......

*** Assertion failure in -[UICollectionViewData layoutAttributesForItemAtIndexPath:], /SourceCache/UIKit/UIKit-2903.23/UICollectionViewData.m:581
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'no UICollectionViewLayoutAttributes instance for -layoutAttributesForItemAtIndexPath: <NSIndexPath: 0xc000000000028096> {length = 2, path = 2 - 5}'
*** First throw call stack:
libc++abi.dylib: terminating with uncaught exception of type NSException
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

objective-c ios uicollectionview uicollectionviewlayout uikit-dynamics

11
推荐指数
1
解决办法
5480
查看次数

Autolayout,UIDynamics和动画

我对自动布局很新,我对如何动画视图感到困惑.

我读了很多,我知道你必须坚持约束,编辑它,并将其包装layoutIfNeeded在一个UIView动画块中.

但是当谈到这样做时,我有点失落.如果有人可以解释我这个动画是如何完成的,我会很高兴.

我认为它可能使用a UIPanGestureRecognizer来改变constant前导空间到容器约束,但它可能使用UIDynamics(对于右边的反弹效果?).

animation ios autolayout uikit-dynamics

11
推荐指数
1
解决办法
3678
查看次数

使用CollectionView复制iOS7消息App UIKitDynamics

我知道有很多关于如何使用UIKitDynamics实现一个有弹性的collectionViewLayout的教程和讨论.

甚至有一个WWDC 13 Session视频解决了在iOS7消息应用程序中复制"消息气泡"的确切主题.

我在会话视频之后创建了自己的"弹性布局"并使用本教程,该教程还提供了实现平铺机制的详细信息,这确保了即使有数千个单元格也能顺利运行.

但是,结果仍然与我们在消息应用程序中看到的非常不同,我的目标是将EXACT SAME BEHAVIOR复制为消息应用程序.

  1. 无论我为UIAttachmentBehavior物业(长度,阻尼,频率)提供多少不同的值,我都无法获得正确的弹跳.
    会话视频说,为长度设置值> 0会破坏事物,因为单元格不会返回到它们的实际位置.但是,我只能通过设置~0.5长度来重现消息应用程序显示的平滑和快速减速?
  2. 当collectionView到达它的边界时,消息应用程序中的最后几个气泡有一个很好的夸张反弹,我的"教程实现"根本就没有反弹.

开发人员论坛中有一个讨论:Apple Dev论坛讨论

有人建议每个Cell使用多个UIAttachmentBehaviors,其他人说应用UIView - spring动画可以给你这个想要的效果.甚至假设消息应用程序根本不使用UIKitDynamics + UICollectionView.(我怀疑Apple没有使用这种明显的技术)

所以我的问题是:有没有人成功实现了Message bubbles行为的精确复制?我还能做些什么来获得有关此主题的答案?

objective-c ios uicollectionview uicollectionviewlayout uikit-dynamics

11
推荐指数
0
解决办法
1869
查看次数

如何判断UIDynamicAnimator何时处于静止状态?

我正在玩UIKitDynamics,它真的很整洁.目前我有这个代码:

CGPoint center = [newSelectedLabel center];

[self.animator removeBehavior:self.snapBehavior];
self.snapBehavior = [[UISnapBehavior alloc] initWithItem:self.indicatorView snapToPoint:center];
self.snapBehavior.damping = 0.67;
[self.animator addBehavior:self.snapBehavior];

[self.delegate didChangeToIndex:sender.tag];
Run Code Online (Sandbox Code Playgroud)

这是一个简单的快照行为,它运作良好.但是,出于各种原因,我想知道系统什么时候进入"休息"状态 - 即一切都停止了.我对动画师的属性或委托方法都很好.

我怎样才能做到这一点?

ios uikit-dynamics

10
推荐指数
1
解决办法
2585
查看次数