2012-03-15 26 views
0

これは私のプログラムです。 私はUIImageViewsを格納するキャッシュ変数@property (nonatomic, retain) NSMutableDictionary *cache;を持っています。画像サイズは768×1024です。私はPanGesture、私は私のメインビューに各UIImageViewを追加スワイプのすべての50のPTでUIImageViewsを使用UIImageViewを最適化する方法

UIImageView *cap_1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"face1_cap_0.png"]]; 
    [self.cache setObject:cap_1 
         forKey:@"cap_1"]; 
    [cap_1 release]; 

    UIImageView *cap_2 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"face1_cap_1.png"]]; 
    [self.cache setObject:cap_2 
         forKey:@"cap_2"]; 
    [cap_2 release]; 

    UIImageView *cap_3 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"face1_cap_2.png"]]; 
    [self.cache setObject:cap_3 
         forKey:@"cap_3"]; 
    [cap_3 release]; 

    UIImageView *cap_4 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"face1_cap_3.png"]]; 
    [self.cache setObject:cap_4 
         forKey:@"cap_4"]; 
    [cap_4 release]; 

    UIImageView *cap_5 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"face1_cap_4.png"]]; 
    [self.cache setObject:cap_5 
         forKey:@"cap_5"]; 
    [cap_5 release]; 

    UIImageView *cap_6 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"face1_cap_5.png"]]; 
    [self.cache setObject:cap_6 
         forKey:@"cap_6"]; 
    [cap_6 release]; 

。私は最初にしか遅れていないし、すべてのUIImageViewsをメインビューに追加しますが、それ以外の時間は速く動作します。最初にスワイプを最適化する方法それとも別の方法で私に助言してください。

+0

いつUIImageViewsを初期化しますか?彼らはスワイプする前に別のスーパービューに設定されていますか? – Martin

+0

in - (void)viewDidLoad – KopBob

+0

いいえ、私はそれらをNSMutableDictionaryに保存します。 – KopBob

答えて

0

UIをブロックしないように、長い操作を別のスレッドにオフロードする必要があります。 例としてthis articleを確認してください。

0

アプリ起動時に読み込みを試みることができます。ユーザーが最初にスワイプしたときに気付かない場合は、アプリ全体が開くまでに時間がかかります。

+0

どうすればいいですか? – KopBob

+0

コード内のすべての割り当てを ' - (void)viewDidLoad'メソッドで行います。しかし、私が前に述べたように、それを含むビューの読み込み時間は遅くなります。誰かが別の答えで言及しているので、別のスレッドでこれを行うこともできるので、読み込み時間はそれほど増えません。 –

0

ロード時に、隠しプロパティをYESに設定してイメージを直接メインビューに追加することができます。次に、ユーザーのスワイプでプロパティをNOに設定するだけです。

EDIT:

別の解決策は、表示最終的にさらに画像・コンピューティングのためのあなたの元の画像を保持するためのいくつかのthumnailsを作ることです。

+0

Thx、あなたは別の方法を知っていますか? – KopBob

+0

画像をキャッシュしているためimageNamedメソッドにもキャッシュシステムがあるため、画像をロードすることに問題はありません。だから私は遅れがaddSubViewメソッドから来ると思う。しかし、私はそれがUIレンダリングについてだから、UIからそれをスレッディングすることは良いアイデアだとは思わない。 1024x768はiPhoneの画面には大きすぎます。画像のサイズを変更する場合は、サムネイルをいくつか作成して表示し、元の画像を維持してください。 – Martin

+0

Opsは、iPhone用ではなく、iPad用です。 – KopBob

関連する問題