2

画像を非同期的にロードするために、サードパーティのライブラリ HJCacheClassesを使用しています。これが同じコードです。それはかなり簡単です:

NSMutableString *url = @"my url";
    HJManagedImageV *asyncImageView = [[HJManagedImageV alloc] initWithFrame:frame];
    [asyncImageView setBackgroundColor:[UIColor grayColor]];
    [asyncImageView showLoadingWheel];
    [asyncImageView setContentMode:UIViewContentModeScaleAspectFill];
    [asyncImageView.imageView setContentMode:UIViewContentModeScaleAspectFill];
    asyncImageView.url = [NSURL URLWithString:url];

    [self.imageManager manage:asyncImageView];
    [the_pScrollView addSubview:asyncImageView];

画像が中央に配置され、ビューのサイズ (フルスクリーンのサイズ) に応じて引き伸ばされたりフィットしたりしないことを除いて、すべて正常に機能します。画像が小さいことはわかっていますが、ビューを埋めるためにビューに収まるようにする必要があります。しかし、setContentMode はどれも機能していません。

4

2 に答える 2

4

HJManagedImageV クラスのソース コードを見ると、作成者が HJManagedImageV インスタンスの imageView を常にアスペクト フィットするようにハードコーディングしていることがわかります。したがって、デフォルトでは、アスペクト フィル コンテンツ モードが機能することはありません。

ただし、これを実現する簡単な方法があります。マネージド イメージ ビューの url プロパティを設定した直後に、次のように独自のクラスにコールバックも追加します。

myImageView.callbackOnSetImage = (id)self;

そして、コールバック関数で、このように imageView に必要な contentMode を設定します。これはテスト済みで、私にとってはうまくいきます。幸運を

-(void) managedImageSet:(HJManagedImageV*)mi
{
    mi.imageView.contentMode = UIViewContentModeScaleAspectFill;
}
于 2012-05-21T14:08:06.453 に答える
0

私は自分自身が答えを見つけました。それはもっと単純で率直だと思います。Icanが述べたように、HJManagedImageVクラスのソースコードで、作成者はHJManagedImageVインスタンスのimageViewを常にアスペクトフィットになるようにハードコーディングしました。だから私はそのコードにコメントしました...同じことをしたい人のために次のステップに従ってください

  1. HJManagedImageV.mファイルに移動します
  2. 名前の付いたメソッドを検索します

    -(void) setImage:(UIImage*)theImage
    
  3. 行にコメントする

    imageView.contentMode = ...
    

    または、imageViewに必要なコンテンツモードを設定します。注:これにより、このクラスを使用するすべてのimageViewのコンテンツモードが設定されます。だから私は最初のオプションで行くことを好みます。

  4. このクラスを使用しているコードで、HJManagedImageVのコンテンツモードを設定します。

于 2012-05-22T08:16:36.960 に答える