首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIKit动力学-从ChildViewController引用UIDynamicAnimator的问题

UIKit动力学-从ChildViewController引用UIDynamicAnimator的问题
EN

Stack Overflow用户
提问于 2013-10-23 18:04:47
回答 1查看 1.5K关注 0票数 0

我有一个UIViewController容器,其中包含多个UIViewController框。我想使用UIKit动力学将物理行为应用到盒中。容器定义外部边框。

UIDynamicAnimator是容器中的一个对象,所有的动态行为都是盒子的一部分。

问题:当我从框(子视图控制器)中引用动画器来添加框行为时,我会遇到错误消息。

这是错误信息

代码语言:javascript
复制
> Terminating app due to uncaught exception
> 'NSInvalidArgumentException', reason: 'View item (<UIView: 0x9972720;
> frame = (0 568; 120 40); clipsToBounds = YES; autoresize = W+H;
> gestureRecognizers = <NSArray: 0x9976f80>; layer = <CALayer:
> 0x9972780>>) should be a descendant of reference view in
> <UIDynamicAnimator: 0x9906d40> Stopped (0.000000s) in <UIView:
> 0x9916bf0> {{0, 0}, {320, 568}}'

UIViewController容器

代码语言:javascript
复制
- (void)viewDidLoad
{
    [super viewDidLoad];

    UIDynamicAnimator* animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
    _animator = animator;
...
}

添加框作为子视图和ChildViewControllers

代码语言:javascript
复制
- (void)tapOnContainer:(UITapGestureRecognizer*)touch {
...
            BoxViewController *note = [[BoxViewController alloc]init];
            [box setContainerObject:self];
            [self addChildViewController:box];
            [self.view addSubview:box.view];
}

UIViewController Box

代码语言:javascript
复制
- (void)viewDidLoad
{
    _containerViewController = (ViewController*) self.parentViewController;
    _gravityBehaviour = [[UIGravityBehavior alloc]initWithItems:@[self.view]];
    [_containerViewController.animator addBehavior:_gravityBehaviour];
...
}

知道该怎么做吗?这样拆分UIDynamicAnimator和UIDynamicBehavior对象可以吗?

EN

回答 1

Stack Overflow用户

发布于 2013-12-19 18:15:53

在这一行:

_gravityBehaviour = [[UIGravityBehavior alloc]initWithItems:@[self.view]];

添加您的小视图而不是self.view

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19549144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档