2017-03-10 8 views
0

私は自分のiOSアプリケーションで(つまり、GMSMapView型を持つ)ユーザーがスクロールをマップするときに移動するボタンをアニメーション化する:アニメーションを示すGMSMapViewを移動するときにNSLayoutConstraintをアニメーション化するにはどうすればよいですか?

- (void)setButtonHidden:(bool)hidden 
    [UIView animateWithDuration:1 animations:^{ 
     [_myButton setAlpha:hidden ? 0 : 1]; 
     // or so: 
     [_myButtonConstraint setConstant:hidden ? -40 : 92]; 
     [[self view] layoutIfNeeded]; 
    } 
} 

ボタンは完璧に動作しますが、隠れがアニメ化されていません。

[self setButtonHidden:YES]からmapView:willMove:のメソッドを呼び出すと、それ以降、マップビューがアニメーション化されると思います。

異なるアニメーションを組み合わせるにはどうすればいいですか?この場合はアニメーションとGMSMapViewアニメーションを組み合わせますか?

+0

アルファ値なしでチェックしましたか? – karthikeyan

+0

はい、アルファなしで制約値を使って移動をアニメーションしようとしました。私はテストのために後でアルファ値を追加しましたが、結果は同じです - 隠蔽はアニメーション化しません –

+0

-40の代わりに0を設定してチェックしたら、レイアウトの問題かどうかを調べることができます。この高さのレイアウト制約か幅ですか? – karthikeyan

答えて

1

解決策が見つかりました。その理由は、GMSMapView bug

ソリューションです。すべての助けを

dispatch_async(dispatch_get_main_queue(), ^{ 
    [UIView animateWithDuration:1 animations:^{ 
     [_myButton setAlpha:hidden ? 0 : 1]; 
     // or so: 
     [_myButtonConstraint setConstant:hidden ? -40 : 92]; 
     [[self view] layoutIfNeeded]; 
     // or any other animation 
    }]; 
}); 

ありがとう!

0

アニメーションを組み合わせることはできますが、hiddenはオン/オフを切り替えることができます。 アルファを最初に調整します(非表示にします)。完了ブロックで非表示に設定します。

[UIView animateWithDuration:1 
        animations:^{ 
         _myButton.alpha = hidden ? 0 : 1; 
         // or so: 
         [_myButtonConstraint setConstant:hidden ? -40 : 92]; 
         [[self view] layoutIfNeeded]; 
        } completion:^(BOOL finished) { 
         _myButton.hidden = hidden ? YES : NO; 
        }]; 
+0

ありがとうございますが、結果は同じです。 'GMSMapView'が私のアニメーションを中断するように見える:( –

関連する問題