0

私のアプリは動作が遅いです。たとえば、UIActionSheetをポップアップすると、スムーズにロールインする代わりに、約5フレーム以上途切れます。理想的には、画面に表示されるビューの量をできるだけ少なくする必要があることを知っていますが、とにかくそれが私が得たものです。

それをスピードアップするための提案はありますか?

編集:

私の見解では:

通常のナビゲーションバーの代わりにカスタムナビゲーションバー。これは、画像ファイルを使用するUIImageViewです。クォーツコアシャドウがあります。3つのボタンが含まれています。これらのボタンのうち2つには、ビューが表示されたときにコードから生成された、通常および強調表示用の2つのUIImageがあります。もう1つのボタンは、通常および強調表示用の画像ファイルを使用します。

その下に背景用の画像ファイルがあります。背景の上にUITableViewがあります。デフォルトでは、セルはありません(ユーザーがセルを追加します)。セルが存在するかどうかに関係なく、セルがスラッギングしているため、セルは無視します。

テーブルビューのヘッダーには、いくつかのラベルと編集可能なuitextviewが含まれています。テキストビューに行が追加されると、ヘッダーのサイズが変わります。また、背景画像があり、その背後にあるビューの背景画像を確認できるように透明になっています。これはファイルからロードされ、その上のテクスチャ画像もファイルからロードされます。

フッターは、同じテクスチャが上にあるファイルからロードされた背景画像です。

4

1 に答える 1

3

アンドリュー、あなたは正確な問題を切り分けるのに十分具体的ではなかったのではないかと思います。しかし、私が選んだことがいくつかあります。まず、テーブルビューが不透明に設定されていることを確認します。また、テーブルのセルが不透明になるようにアプリを設計してみてください。私はあなたのデザインがこれを可能にすると思います。テーブルとそのセルを他のコンテンツに対して半透明に表示する場合は、ビューのレンダリングパフォーマンスを最適化する方法を実際に知る必要があります。それが本当に必要な場合は、UITableViewに代わる独自のカスタム専用の代替手段を開発する必要があります。 (実行できますが、かなり高度なものです)。

また、クォーツシャドウの使用についても言及しています。専門的な要件がない限り、UIKitを使用して画像の周囲に影を描くことができるはずです。やりたいことのためにQuartzを使用する必要がありますか?すでにこれを知っている場合はお詫びしますが、iOS開発にかなり慣れておらず、シャドウの実行方法を検討している場合は、それを実行するためのQuartz APIを見つけて、それが解決策であると想定している可能性があります(必要なものによって異なります) )UIKitを使用したほうがよいでしょう。一般的な経験則として、Quartzは、UIKitAPIだけではやりたいことができないことが確実な場合にのみ使用してください。

チェックするもう一つのこと。Quartzを使用している場合は、UIImageビューのグラフィックスコンテキストを取得し、drawRectでビューコンテキストを描画している可能性があります。ビュー階層がどのように構成されているか、およびナビゲーションバービューが透明に設定されているかどうかによって異なります。 UITableViewの上部にある場合、カスタムdrawRect実装がすべてのアニメーションフレームで不必要に呼び出される可能性があり、これはパフォーマンスの大きな低下になります。

あなたが提供した情報のレベルを考えると、私は少し推測する必要があり、正確な答えを与えることはできません。ただし、UIViewのパフォーマンスを最適化する方法を明確に理解するには、このビデオをチェックすることをお勧めします(ただし、アクセスするにはApple Developerアカウントが必要です)。

https://developer.apple.com/videos/wwdc/2011/

セッション121–UIKitレンダリングを理解する

お役に立てれば。ポール。

于 2012-04-11T16:15:45.580 に答える