4

私は iPhone プロジェクトで SDWebImage を使用しており、それを使用して画像を表のセルにロードしています。

元のダウンロード画像は 150 * 150 です。私のプレースホルダー画像は 32*32 (必要なサイズ) です。

最初にイメージが読み込まれると、sdwebimage はダウンロードしたイメージのサイズをプレースホルダー イメージのサイズ (32*32) に一致するように適切に変更します。すべて良い。

ただし、戻って同じページに戻ると、画像が引き伸ばされ、cell.imageView の高さ全体を埋めます。これは正常な動作ですか?

初期の 32*32 サイズを常に保持する必要があります。その方法を提案できますか?

編集:別のユーザーが同様の問題に直面しているこのリンクを見つけました(質問オープン)。ユーザーは、この問題を説明する短いYouTube ビデオも作成しました。

考え?

4

4 に答える 4

3

cellForRowAtIndexPathで特定のサイズを試してください。

   UIImageView *addImage = [[UIImageView alloc] init];
   [addImage setImageWithURL:[NSURL URLWithString:yourCellImageURL] placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 
   [addImage setFrame:CGRectMake(7, 3, 78, 57)];
   [cell.contentView addSubview:addImage];
   [cell setIndentationLevel:8];
于 2012-03-06T20:07:36.133 に答える
3

tldr : カスタムUITableViewCellサブクラスに@property IBOutlet UIImageView*呼び出された がある場合はimageView、名前を別のもの ( などcustomImageView) に変更すると、適切に機能します。理由については、残りの回答をお読みください

誰もそれに答えていないことがわかり、これに対する解決策を見つけるために丸一週間無駄にしたので、ここで私に何が起こったのか、そしてあなたにそれが起こらないようにする方法を示します(したがって、問題を解決します)。

CustomTableViewCellを拡張する を作成しましたUITableViewCell

@property (weak, nonatomic) IBOutlet UIImageView *imageView;カスタムセルに追加しました。今まではすべて順調に見えますよね?

そうでないことを除いて。

UITableViewCellすでにimageViewプロパティを持っています。iOS 7 は最初にプロパティを使用しますが、Cell が再利用されると、UITableViewCellimageViewが使用されるため、すべての制約または以前に定義された固定サイズが無視されます。

iOS 8 は常に からのイメージを使用しUITableViewCellます。したがって、問題はそこでより明白です。以前の iOS バージョンでもこの問題の程度はさまざまで、通常は非常によく似た症状を示していました。

ソリューション?自分でプロパティを処理するUITableViewCell.imageView(ビューをレイアウトするためのコードを追加する) か、Storyboards または xib に制約 (自動レイアウトを使用している場合) を追加できる別の名前で独自のプロパティを作成します。

于 2014-10-14T01:51:09.843 に答える
0

UIImageView の適切なコンテンツ モードを設定してみてください

于 2012-02-01T02:37:59.750 に答える
0

SDWebImage で画像サイズを変更したい場合。この呼び出しを使用します。

// Here we use the new provided setImageWithURL: method to load the web image
[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
           placeholderImage:[UIImage imageNamed:@"placeholder.png"]
                  completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) { /*here you can change size of image */ }];
于 2013-08-27T08:56:17.007 に答える