4

私のカスタムtableViewCellには、セル全体を埋めるimageView(tableViewCellのデフォルトのimageViewではない)があります。contentMode を使用して IB で (およびコードで) 設定され、UIViewContentModeAspectFill境界にクリップされます。imageView のイメージを でロードされたイメージに変更するたびに、必要に応じて imageView のサイズが変更さ[UIImage imageNamed:...]れ、フィットします。ただし、イメージ セットを でロードすると[UIImage imageWithData:...]、イメージは設定されますが、サイズは変更されません。

イメージ自体をデータとともにロードするコードは、バックグラウンド スレッドで実行され、次のようになります。

- (void)getImage:(NSString *)URL {
    NSError *error = nil;
    UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:URL] options:NSDataReadingMapped error:&error]];
    if (!error){
        [self.thumbView setImage:image];
        [self.thumbView setContentMode:UIViewContentModeScaleAspectFill];
    }
}

のメインスレッドで画像を設定しようとしましたlayoutSubviewsが、常に同じ結果が得られます.imageViewを埋めるためにサイズが変更されません. 画像 (JPG) をアプリ バンドルに追加し、プログラムで を使用して設定しましたが[UIImage imageNamed:...]、これは機能しますが、アプリは URL からデータを取得する必要があります。

また、UIImageView+AFNetworking-class を使用して、独自のスレッドを作成する代わりに画像を非同期に設定しようとしましたが、それも機能しません。

データから読み込まれたときに、画像が UIImageView の contentMode を尊重しないのはなぜですか? どんな助けでも大歓迎です。JPEG も PNG も機能しません。

4

1 に答える 1

1

他の誰かが同じ問題に遭遇した場合、これを修正するために私がしたことは次のとおりです。

IB で新しい imageView を作成し、古いものを削除して、contentMode-value と clipsToBounds-valueのみを変更しました。tableViewCell.m init-code で、プレースホルダー イメージを設定すると、出来上がりです。すべてが魅力的に機能します。

原因はよくわかりませんが、Clears Graphics Content のチェックマークが設定されていたせいかもしれません (おっと)。

于 2013-07-28T09:47:36.173 に答える