全て、
ビューが特定のポイントから画面にスライドする、一種の「スライドアップ」効果でサブビューを追加してアニメーション化するメソッドを必死に作成しようとしています。UIImageView を動作させることはできますが、それを UIPickerView に適用するのにかなりの時間を費やしています。何が起こるかというと、UIPickerView はその高さの約 1/4 だけ移動してアニメーション化します。UIImageView は実際には高さ 0 で始まり、画面上にスライドします。
これまでの私のコードは次のとおりです。
+ (void) slideupView:(UIView*) view duration:(CGFloat) duration completion:(void (^)(BOOL
finished)) completion {
CGRect endBounds = view.bounds;
CGRect startBounds = endBounds;
startBounds.size.height = 0;
view.bounds = startBounds;
view.contentMode = UIViewContentModeTop;
view.clipsToBounds = YES;
view.layer.anchorPoint = CGPointMake(0.5, 1.0);
CGPoint pos = view.layer.position;
pos.y += (endBounds.size.height / 2);
view.layer.position = pos;
[UIView animateWithDuration:duration delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{
view.bounds = endBounds;
}
completion:completion];
}
私が読んだことから、変換を変更した場合、フレームアプローチは機能しないため、フレームの代わりに境界長方形を使用することをお勧めするアプローチのように思えます。
UIPickerView の高さを変更できないことも読んだので、それがこの問題の理由であるかどうか疑問に思っています。確かに、他の UIView サブクラスで試したことはありません。
何かご意見は?より良いアプローチはありますか?画面全体をカバーしたくないことを除いて、モーダルビューコントローラーのビューを表示するのと同様に、ビューを画面にアニメーション化したいだけです。キーボードが画面に表示されるときのように、スライドアップ効果が必要です。
ありがとう!ジャスティン