4

最近、UIDynamics を使用して画像ビューを所定の位置にアニメーション化しました。ただし、自動レイアウトの y-pos 制約が画面外に設定されていたため、画面から離れてから画面に戻ると、画像ビューが再び画面外に配置されていました。アニメーションには約 3 秒かかったので、3 秒後に制約をリセットしました。それは少しハッキーに感じます。

私の質問はこれです: autolayout と UIDynamics を同時に処理する適切な方法は何ですか?

4

2 に答える 2

3

このチュートリアルでは、Geppy Parziale によって提供された優れたソリューションがあります。

基本的に、UIDynamicItem に準拠するオブジェクトを作成できます。

@interface DynamicHub : NSObject <UIDynamicItem>
    @property(nonatomic, readonly) CGRect bounds;
    @property(nonatomic, readwrite) CGPoint center;
    @property(nonatomic, readwrite) CGAffineTransform transform;
@end

境界を初期化する必要があるか、クラッシュします。

- (id)init {
    self = [super init];
    if (self) {
        _bounds = CGRectMake(0, 0, 100, 100);
    }
    return self;
}

次に、そのオブジェクトで UIDynamics を使用し、中間値を使用して制約を更新します。

DynamicHub *dynamicHub = [[DynamicHub alloc] init];

UISnapBehavior *snapBehavior = [[UISnapBehavior alloc] initWithItem:dynamicHub
                                           snapToPoint:CGPointMake(50.0, 150.0)];
[snapBehavior setDamping:.1];

snapBehavior.action = ^{
     self.firstConstraint.constant = [dynamicHub center].y;
     self.secondConstraint.constant = [dynamicHub center].x;
};

[self.animator addBehavior:snapBehavior];
于 2014-08-08T11:24:29.630 に答える