2012-01-30 13 views
0

私のアプリには400x300の400パターンの画像がバンドルされています。そのイメージの一部をUIImageViewsに読み込むためのファクトリメソッドを作成したいと思います。私はコンテンツモードを使用していくつかの成功を収めており、範囲にクリッピングしていますが、1トンのビューをビューにロードすると、ビューがロードされるまでに5秒以上かかる場合があります。ここに私の現在のメソッドの例があります。UIImageデータの読み込みのみ

UIImageView *tinyImageView = [[UIImageView alloc] initWithImage:[UIImage [email protected]"400x300testImage.png"]; 
[tinyImageView setFrame:CGRectMake(0, 0, 10, 200)]; 
[tinyImageView setContentMode:UIViewContentModeTopLeft]; 
[tinyImageView setClipsToBounds:YES]; 
[self.tinyImagesView addSubview:tinyImageView]; 

私はImageIOにクラスファイルを読んでいると私は私の答えはそこにあるが、私は実行可能なコードを一緒に入れて苦労していると思います。別のstackoverflowの質問では、私はこのコード

CFDictionaryRef options = (__bridge CFDictionaryRef)[NSDictionary dictionaryWithObjectsAndKeys: 
               (id)kCFBooleanTrue, (id)kCGImageSourceCreateThumbnailWithTransform, 
               (id)kCFBooleanTrue, (id)kCGImageSourceCreateThumbnailFromImageIfAbsent, 
               (id)[NSNumber numberWithFloat:200.0f], (id)kCGImageSourceThumbnailMaxPixelSize, 
               nil]; 
    CGImageRef imgRef = CGImageSourceCreateThumbnailAtIndex(imageSource, 0, options); 

    UIImage *scaled = [UIImage imageWithCGImage:imgRef]; 

    CGImageRelease(imgRef); 
    CFRelease(imageSource); 

    return scaled; 

これは、完全な画像やクリッピングをロードに似てロード時間を持っているに出くわしました。

イメージファイルの10x200ストリップだけを読み込み、それを10x200 pngを作成するのと同じ速さでUIImageViewに読み込むことは可能ですか?imageNamedを使用して読み込みますか?

+0

400x300イメージの1つを表示できますか?あなたはストリップで何をしていますか?パターンを記述すると、パターンをタイルしようとすると、大きなタイルでより良いパフォーマンスが得られます。 – iccir

+0

私は使用された特定のイメージを表示することはできませんが、それは木目のようなものだと言えます。それはうまくスケールされない非反復パターンです。ストリップはサムネイルのように使用され、画像全体の小さな部分を識別します。 – SageAMDP

答えて

1

あなたが本当に望んでいることは、CATiledLayerです。画像のセットをポイントして、必要なものを自動的に引き上げることができます。

UIViewにはCATiledLayerを追加できます。

+0

これは問題を回避するための最良のアイデアのようですが、私はまだ画像を部分的にロードできない理由を知りたいと思います。ご協力ありがとうございました。 – SageAMDP

+0

私はそれが何かの周りに乗っているとは言わない、それはあなたがしようとしているものに最適なソリューションです。 –

関連する問題