2012-04-20 8 views
0

私のアプリでは、ユーザーの周囲に店舗を表示する必要があります。各店舗には名前、タグライン、ロゴがあり、ピンに触れると地図上に表示されるコールアウトバブルにこれらの情報をすべて表示したいと考えています。画像を遠隔にロードする必要があることを考慮し、ピンに触れた後にコールアウトを表示するのを3秒待つことは受け入れられません。何が最善の解決策でしょうか? 約20店舗の配列のファイルは10kbに似ていますが、すべてのロゴをすぐにロードすると、おそらく110kb(画像あたり5kbの見積もりを想定します)のようになります。それは良いアイデアです。地図のコールアウトバブルでリモート画像を読み込む際に問題が発生する

答えて

1

私のプロジェクトの1つでは、そのケースはうまく動作します。 イメージのリモート非同期ロードにSDWebImageを使用しています。

私がやった:

サブクラスMKPinAnnotationView:もちろん

の.h

@interface TLStoreResultMapAnnotationView : MKPinAnnotationView 

@property (assign)BOOL imageSet; 

@end 

.M

#import "TLStoreResultMapAnnotationView.h" 
#import "TLStoreResultMapAnnotation.h" 
#import "UIImageView+WebCache.h" 

@implementation TLStoreResultMapAnnotationView 
@synthesize imageSet=_imageSet; 

- (void)layoutSubviews { 

    if(self.selected && (!self.imageSet)) { 
     TLStoreResultMapAnnotation *annotation = (TLStoreResultMapAnnotation *)self.annotation; 

     NSURL *url = [NSURL URLWithString:[annotation.store.imageURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 

     UIImageView *storeImageView = (UIImageView *)self.leftCalloutAccessoryView; 
     storeImageView.frame = CGRectMake(storeImageView.frame.origin.x,storeImageView.frame.origin.y,30.0,30.0); 
     storeImageView.contentMode = UIViewContentModeScaleAspectFill; 
     storeImageView.clipsToBounds = YES; 
     [storeImageView setImageWithURL:url 
        placeholderImage:[UIImage imageNamed:@"webloading.png"] options:SDWebImageCacheMemoryOnly]; 


     self.imageSet = YES; 
    } 

    [super layoutSubviews]; 
    UIImageView *storeImageView = (UIImageView *)self.leftCalloutAccessoryView; 
    storeImageView.frame = CGRectMake(storeImageView.frame.origin.x,storeImageView.frame.origin.y,30.0,30.0); 
} 

@end 

をコードを少し適応するためのあなたの必要性。

+0

ありがとうございました!私はこれを試してみるつもりです。 – Giovanni

関連する問題