5

我正在尝试学习 UIKit Dynamics。
我创建了一个框视图并在其上添加了 UIGravityBehavior,但是当我运行项目时没有任何反应!

视图控制器.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIView* box = [[UIView alloc]initWithFrame:CGRectMake(100, 50, 100, 100)];
    box.backgroundColor = [UIColor blackColor];
    [self.view addSubview:box];
    UIGravityBehavior* gravityBehaviour = [[UIGravityBehavior alloc]init];
    [gravityBehaviour addItem:box];
    UIDynamicAnimator* myAnimator = [[UIDynamicAnimator alloc]initWithReferenceView:self.view];
    [myAnimator addBehavior:gravityBehaviour];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

这是我的视图 controller.m 文件。
程序有什么问题?

4

4 回答 4

8

如果要在 ViewDidLoad 中使用它,则需要将 UIDynamicAnimator 和 UIGravityBehavior 声明为当前 VC 的属性。自动引用计数将在 ViewDidLoad 完成后释放这些对象。

问候

于 2014-06-24T04:05:17.520 回答
0

我认为您必须将 UIDynamicAnimator 实例声明为 Strong 类型。

例如,您可以将 UIDynamicAnimator 定义为 UIViewController 的成员。

@interface ViewController ()
    @property (nonatomic, strong) UIDynamicAnimator *animator;
@end

然后在你的 viewDidLoad

// ... code to init your self.animator and add behaviors
self.animator = animator;
于 2014-06-07T14:51:17.023 回答
0

这里有一个关于使用 UIGravityBehavior 创建应用程序的非常基本的教程:https ://www.youtube.com/watch?v=vKqjKcVUYPc - 希望对您有所帮助。

于 2014-02-03T17:58:33.547 回答
0

你能试试它对我有用吗:

UIView* box = [[UIView alloc]initWithFrame:CGRectMake(100, 50, 100, 100)];
box.backgroundColor = [UIColor blackColor];
[self.view addSubview:box];

UIDynamicAnimator* myAnimator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
UIGravityBehavior* gravityBehaviour = [[UIGravityBehavior alloc] initWithItems:@[box]];
[myAnimator addBehavior: gravityBehaviour];

//扩展

尝试在您的 .m 文件中创建实例变量:

UIDynamicAnimator* _animator;
UIGravityBehavior* _gravity;

并在 viewDidLoad 创建您的框视图,然后添加:

_animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
_gravity = [[UIGravityBehavior alloc] initWithItems:@[box]];
[_animator addBehavior:_gravity

它应该解决你的问题。

于 2013-12-07T13:15:16.753 回答