0

複数の UIViewControllerボックスを含む1 つの UIViewControllerコンテナーがあります。UIKit Dynamics を使用してボックスに物理動作を適用したいと思います。コンテナーは外側の境界を定義します。

ここに画像の説明を入力

UIDynamicAnimatorはコンテナー内のオブジェクトであり、すべての Dynamics 動作はボックスの一部です。

問題: ボックスの動作を追加するためにボックス (childviewcontrollers) からアニメーターを参照すると、エラー メッセージが表示されます。

ここにエラーメッセージがあります

> 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 コンテナ

- (void)viewDidLoad
{
    [super viewDidLoad];

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

ボックスをサブビューおよび ChildViewController として追加する

- (void)tapOnContainer:(UITapGestureRecognizer*)touch {
...
            BoxViewController *note = [[BoxViewController alloc]init];
            [box setContainerObject:self];
            [self addChildViewController:box];
            [self.view addSubview:box.view];
}

UIViewController ボックス

- (void)viewDidLoad
{
    _containerViewController = (ViewController*) self.parentViewController;
    _gravityBehaviour = [[UIGravityBehavior alloc]initWithItems:@[self.view]];
    [_containerViewController.animator addBehavior:_gravityBehaviour];
...
}

これを機能させる方法はありますか?UIDynamicAnimator オブジェクトと UIDynamicBehavior オブジェクトをこのように分割してもよろしいですか?

4

1 に答える 1

0

この行で:

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

の代わりに小さなビューを追加しますself.view

于 2013-12-19T18:15:53.790 に答える