質問

最初のiPhoneアプリケーションを開発していますが、「機械」を超えて作成しました。そして今、私はフィット&をまとめています詳細を終了します。

設定ペインの画面の下部からスライドするビューがあります。ビュー自体の不透明度は0で、内部にUIImageViewビューがあり、コントロールの背後に、ビューの実際の背景を作成するPNGがあります。次のように、UIViewの組み込みアニメーション呼び出しを使用しています。

[self.view addSubview:settingsViewController.view];

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];

frame.origin.y = 200.0;
settingsViewController.view.frame = frame;

[UIView commitAnimations];

残念ながら、デバイス上のアニメーションは途切れ途切れです。背景として使用しているPNGは、幅の最上部の30ピクセルのみが透明です。透明度のないPNGを使用すると、アニメーションはスムーズになります。

アプリケーション自体は高度にグラフィカルであるため、ビューは他のPNGでいっぱいの画面の上にアニメーション表示されます。

デバイスがこの種のアニメーションをスムーズに処理できない場合、私は非常に驚きます。そのため、アプローチを改善する必要があると思います。私がこれまでに持っていた考えが含まれています;

おそらく、Core Animationを直接使用する必要がありますか?アニメーション化する前に設定ペインの背後にあるビューをキャッシュすると、どういうわけか有益ですか?

これは私にとって新しい領域であり、最適化の方法がなければならないことは知っています。お時間をありがとう!

役に立ちましたか?

解決

Core Animationを「直接」使用するかどうかは関係ありません。または、中心のプロパティをアニメーション化します。グラフィックハードウェアは、アニメーションのすべてのフレームで透明な画像と背景を合成する必要があるため、途切れがちです。完全に不透明なPNGを使用するとアニメーションがスムーズになると自分で言いました。

Instrumentsでアプリを実行すると、Core Animationツールには合成エリアをリアルタイムで強調表示するチェックボックスがあり、描画をやり直すヒントが表示される場合があります。

上部30ピクセルのみを透明にする必要がある場合、背景を上部30ピクセルストリップ(透明)と残り(不透明)の2つのビューに分割する価値があります。フレームごとにビュー全体を合成する場合、その変更は、上部の30ピクセルのみを合成するだけでよいことを知らせるのに十分かもしれません。

他のヒント

過去にフレームをアニメートする際に問題が発生しました。代わりにcenterプロパティをアニメートしてください。

また、背景画像の透明性は何のために必要ですか?その画像を含むビューの背景として使用し、UIImageViewの必要性を排除することはできませんか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top