0

実際には、これについてはわかりませんが、インターネットが利用可能かどうかを確認し、それに応じて画像を A​​syncImageView にロードするという条件があります。インターネットから画像を読み込むと問題なく動作しますが、ローカル画像を A​​syncImageView に読み込むことはできますか?

4

3 に答える 3

0

Nick Lockwoodの AsyncImageView のことですか?これは単なる UIImageView のカテゴリなので、既に画像がある場合は、画像のプロパティを直接設定してみませんか?

于 2012-08-14T12:47:01.580 に答える
0

おそらく、以下があなたを助けるでしょう。

  1. 新しいファイルを作成する

  2. UIImageView から継承

  3. 次のコードをコピーして貼り付けます。

    輸入

    「ASIHTTPRequest.h」をインポート

    @interface AsynchronousImageView : UIImageView{ NSMutableData *data; UIActivityIndi​​catorView *activityIndi​​cator; NSString *urlString; // 画像キャッシュ ディクショナリのキー ASIHTTPRequest *requestLocal; @property(nonatomic,assign) UIActivityIndi​​catorView *activityIndi​​cator;

    • (void)loadImageFromURLString:(NSString *)theUrlString;
    • (void)loadImageFromNSURL:(NSURL *)theUrl;
    • (void)loadImageFromFile:(NSString *)filePath; -(無効) showLoader; -(無効) stopLoader; @終わり
  4. 次に、.m ファイルに以下を貼り付けます。

    import "AsynchronousImageView.h"

    import "ASIDownloadCache.h"

    @implementation AsynchronousImageView @synthesize activityIndi​​cator;

    • (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { // 初期化コード //[self setContentMode:UIViewContentModeScaleAspectFit]; 自分自身を返します。} -(void)dealloc { if (requestLocal) { [requestLocal setDelegate:nil]; } requestLocal = nil; activityIndi​​cator = nil; [スーパーdealloc]; } /* // drawRect のみをオーバーライド: カスタム描画を実行する場合。// 空の実装は、アニメーション中のパフォーマンスに悪影響を及ぼします。
    • (void)drawRect:(CGRect)rect { // 描画コード } */ -(void) showLoader{ if(activityIndi​​cator == nil){ activityIndi​​cator = [[UIActivityIndi​​catorView alloc]initWithActivityIndi​​catorStyle:UIActivityIndi​​catorViewStyleWhiteLarge]; [self addSubview:activityIndi​​cator]; activityIndi​​cator.frame = CGRectMake(self.bounds.size.width / 2.0f - activityIndi​​cator.frame.size.width /2.0f, self.bounds.size.height / 2.0f - activityIndi​​cator.frame.size.height /2.0f, activityIndi​​cator.frame.size.width, activityIndi​​cator.frame.size.height); [ActivityIndi​​cator リリース]; } [activityIndi​​cator startAnimating]; } -(void) stopLoader{ if(activityIndi​​cator){ [activityIndi​​cator stopAnimating]; [activityIndi​​cator removeFromSuperview]; activityIndi​​cator = nil; } }
    • (void)loadImageFromFile:(NSString *)filePath { UIImage *img = [UIImage imageWithContentsOfFile:filePath]; [自己 setImage:img]; [セルフストップローダー]; }
    • (void)loadImageFromURLString:(NSString *)theUrlString { / if (requestLocal) { [requestLocal setDelegate:nil]; } / requestLocal = nil; [自己 showLoader]; NSURL *url = [NSURL URLWithString:theUrlString]; requestLocal = [ASIHTTPRequest requestWithURL:url]; [requestLocal setDelegate:self]; [requestLocal setDidFailSelector:@selector(requestFailed)]; [requestLocal setDownloadCache:[ASIDownloadCache sharedCache]]; [requestLocal setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy]; [requestLocal startAsynchronous]; self.image = [UIImage imageNamed:@"playerDefault.png"]; }

    -(void)loadImageFromNSURL:(NSURL *)theUrl { if (requestLocal) { [requestLocal setDelegate:nil]; } requestLocal = nil; requestLocal = [ASIHTTPRequest requestWithURL:theUrl]; [requestLocal setDelegate:self]; [requestLocal setDidFailSelector:@selector(requestFailed)]; [requestLocal startAsynchronous]; }

    • (void)requestFinished:(ASIHTTPRequest *)request { requestLocal = nil; [セルフストップローダー]; UIImage *tempArt = [UIImage imageWithData:[リクエスト応答データ]]; if (tempArt) { self.image = tempArt; [データ公開]; データ = ゼロ; } -(void)requestFailed:(ASIHTTPRequest *)request{ requestLocal = nil; [セルフストップローダー]; [データ公開]; データ = ゼロ; } @終わり
  5. 次に、ViewComtroller .h で AsycnhronousImageView クラスをインポートし、これを記述します。

    画像の IBOutlet を次のようにします。

    IBOutlet AsycnhronousImageView *image;

  6. UIImage ビューではなく、xib AsycnhronousImageView でクラスを変更します。

  7. 次のメソッドを呼び出します

    • (void)loadImageFromFile:(NSString *)filePath;
于 2012-08-14T13:25:28.257 に答える
0

実際、私はこの問題の解決策を得ました.私がしたことはこれだけでした

 NSURL *theURL = [NSURL fileURLWithPath:@"/Users/gaurav/Library/Application Support/iPhone Simulator/5.0/Applications/AC6E9B2E-DB25-4933-A338-755B134E1A61/Documents/Attachment290_294_1344928691.jpeg"];
    NSLog(@"local URl is::%@",theURL);
    [self.asyncimageview loadImageFromURL:theURL];
于 2012-08-14T13:04:30.593 に答える