テキストと画像を含む標準の(つまり、カスタムではない)TableViewセルがあります。問題は、画像のサイズが異なり、UIViewContentModeScaleAspectFillのようなものとして配置したいことです。私は単に UIImage を 54x54 にしたいだけで、常にサイズを変更するのではなく、正方形にしたいだけです!
そこにはたくさんのアイデアがありますが、どれも機能しません。最も近いものは機能しましたが、画像はテキストの上にありました(別の画像をサブビューとして追加しました)。
編集モードを使用してドラッグするため、カスタムセルを使用することに熱心ではありませんが、カスタムセルではまだそれを理解していません。
編集
私は最近試しました。
UIImage *tempImage = [UIImage imageWithData:data];
CGSize size = CGSizeMake(54, 54);
UIGraphicsBeginImageContext(size);
[tempImage drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
cell.imageView.image = scaledImage;
私はそれを望んでいた cellForRow にこれを持っています。
cell.imageView.contentMode = UIViewContentModeScaleAspectFill;
これはカスタム セルでのみ機能します。
- (void)layoutSubviews {
[super layoutSubviews];
self.imageView.frame = CGRectMake(0,0,54,54);
}
これはうまく機能しますが、テキストをカバーしています。
UIImageView *imgView=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 54, 54)];
imgView.backgroundColor=[UIColor clearColor];
[imgView.layer setCornerRadius:8.0f];
[imgView.layer setMasksToBounds:YES];
[imgView setImage:[UIImage imageWithData: imageData]];
[cell.contentView addSubview:imgView];
これは、私が抱えている正確な問題を示しています。
別の編集
これでうまくいきました、ありがとう。
[cell setIndentationWidth:54];
[cell setIndentationLevel:1];
UIImageView *imgView=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 54, 54)];
imgView.backgroundColor=[UIColor clearColor];
[imgView.layer setMasksToBounds:YES];
[imgView setImage:myImages[indexPath.row]];
[cell.contentView addSubview:imgView];