- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在使用 Xcode 5.1.1 在 iOS7 中使用新的物理引擎时,我编写了以下代码:
#import "ZViewController.h"
@interface ZViewController ()
@property (nonatomic, strong) UIView *cardView;
@property (nonatomic, strong) UIDynamicAnimator *animator;
@property (nonatomic, strong) UIAttachmentBehavior *attachment;
@end
@implementation ZViewController
- (void)viewDidLoad{
[super viewDidLoad];
self.cardView = [[UIView alloc]initWithFrame:CGRectMake(0.0, 0.0, 100.0, 100.0)];
self.cardView.backgroundColor = [UIColor lightGrayColor];
[self.view addSubview:self.cardView];
UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panGestureHandler:)];
[self.cardView addGestureRecognizer:panGestureRecognizer];
self.animator = [[UIDynamicAnimator alloc]initWithReferenceView:self.view];
}
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
self.cardView.center = self.view.center;
}
- (void)panGestureHandler:(UIPanGestureRecognizer *)panGesture{
CGPoint touchPoint = [panGesture locationInView:self.view];
switch(panGesture.state){
case UIGestureRecognizerStateBegan:
self.attachment = [[UIAttachmentBehavior alloc]initWithItem:self.cardView attachedToAnchor:touchPoint];
[self.animator addBehavior:self.attachment];
break;
case UIGestureRecognizerStateChanged:
touchPoint.x = 160.0;
self.attachment.anchorPoint = touchPoint;
break;
case UIGestureRecognizerStateEnded:
[self.animator removeBehavior:self.attachment];
self.attachment = nil;
break;
default:
break;
}
}
@end
当我测试这段代码时,我发现了一个非常奇怪的摆动/抖动。在大多数情况下,上下拖动 cardView 会执行预期的操作,即 cardView 以 x 轴为中心上下滑动,但有时 cardView 会沿对角线向左移动,然后沿对角线移动回 x 轴中心。这种摆动似乎并不总是发生,但它似乎总是向左摆动。
有没有人见过这个?任何想法是什么原因造成的?如何阻止它?
提前致谢 - AYAL
最佳答案
我试过你的代码,可以重现这个问题。在我设置长度后,问题就停止了。
尝试将附件的长度设置为 1
case UIGestureRecognizerStateBegan:
self.attachment = [[UIAttachmentBehavior alloc]initWithItem:self.cardView attachedToAnchor:touchPoint];
self.attachment.length = 1;
[self.animator addBehavior:self.attachment];
break;
关于ios - UIDynamicAnimator/UIAttachmentBehavior 抖动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23097695/
我遇到了与 https://stackoverflow.com/questions/28275004/uidynamicanimator-stop-reacting-to-uigravitybehav
我正在尝试向 UIGravityBehavior 添加一个 View (我通过 cmd 将其创建为图形+将其拖动到我的代码并创建一个 Outlet)但是我的应用程序崩溃了,尽管当我在代码中创建相同的
我正在尝试手动更改 UIDynamics 中的 View 旋转,但 View 的旋转总是在更新后重置。 documentation说,UIDynamicAnimator的updateItemUsing
我在使用 initWithItem:attachedToItem: 时遇到问题 初始化连接一个动态项的中心点到另一个动态项的中心点的附件行为。但是当我使用方法 pan 改变 topview 的中心点时
我使用 UIDynamicsAnimator 取得了良好的效果,只是动画完成后,插入和弹起的图像变得模糊。请帮助我。 @property (nonatomic,weak) IBOutlet UIIma
我是自动布局的新手。我有一个 View 层次结构可以很好地与自动布局一起工作。 我有一个显示菜单的容器 View 。我正在使用 Dynamics 为这个 View 设置动画以产生流行效果: View
我想放慢由我的 UIDynamicAnimator 生成的动画,以便我可以微调我的 UIDynamicBehaviors。 在 ios 模拟器中,调试菜单下有一个菜单选项,标签为“在最前面的应用程序中
我在 Xcode 7 中工作,应用程序适用于 IOS 9。目标是使用 UIDynamicAnimator、UIGravityBehavior 和 UICollisionBehavior 让圆形物体表现
我知道 sprite kit 是玩游戏的方式,但我想知道是否有办法使用 UIDynamicAnimator 来设置除重力之外的额外恒定力。我正在制作平台游戏并将重力设置为向下。我有部分屏幕设置来表示箭
我定义了 UIDynamicAnimator 属性: lazy fileprivate var animator: UIDynamicAnimator = { return UIDyn
您将如何暂停和恢复 UIDynamicAnimator 的物理模拟?无法以编程方式暂停和恢复。当所有项目都处于静止状态时会出现“暂停”状态,但我正在寻找不同的东西。例如,我想让一个物体被重力场拉动,然
在使用 Xcode 5.1.1 在 iOS7 中使用新的物理引擎时,我编写了以下代码: #import "ZViewController.h" @interface ZViewController (
我想使用 UIDynamicAnimator 和重力/碰撞/弹性效果来制作放下物体的动画。我查看了 Apple 的示例应用程序 DynamicsCatalog , 它非常简单,除了当对象从其容器边界外
我正在尝试读取我的设备运动,特别是设备处于横向模式时的滚动,并将返回的角度转换为 UIView 的位置(基本上是在屏幕上制作“级别”以向用户显示手机处于理想角度)。 此代码给出了所需的滚动结果,但由于
我正在阅读 O'Reilly 的 Swift Development with Cocoa 并收到以下错误: Bound value in a conditional binding must be
我有一个 ViewController,它已在 InterfaceBuilder 中配置为对其所有 subview 使用 AutoLayout。布局工作正常。 我想使用 UIDynamicAnimat
我正在玩 UIKitDynamics ,它真的很整洁。目前我有这段代码: CGPoint center = [newSelectedLabel center]; [self.animator remo
我正在尝试创建一个 View ,其中一些项目沿正常重力矢量落下,而其他项目沿相反矢量落下 self.animator = [[UIDynamicAnimator alloc] initWithRefe
我有一个名为 DropitBehavior 的类,它继承自 UIDynamicBehavior。我的 UIViewController 中有两个属性。 @property (strong, nonat
当调用 applicationDidEnterBackground 时,如何停止 UIDynamicAnimator?另外,如何在 applicationWillEnterForeground 中启动
我是一名优秀的程序员,十分优秀!