実際に与える画像のサイズに関係なくUITableViewCell
、フレームサイズを明示的に設定したいので、のサブクラスを作成しました。imageView
そうは言っても、私のtableView
負荷がかかると、一瞬のうちにすべてが変化するようです. 画像が少し大きくなり、 と がtitleLabel
画像detailLabel
に近づきます。サブクラスで何か間違ったことをしましたか?
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Selected View
self.selectedBackgroundView = [[UIView alloc] initWithFrame:self.frame];
self.selectedBackgroundView.backgroundColor = RGB(233, 233, 233);
// Text Label
self.textLabel.textColor = [UIColor darkGrayColor];
self.textLabel.opaque = YES;
self.textLabel.highlightedTextColor = self.textLabel.textColor;
// Detail
self.detailTextLabel.font = [UIFont systemFontOfSize:12.0];
self.detailTextLabel.numberOfLines = 3;
self.detailTextLabel.opaque = YES;
self.detailTextLabel.highlightedTextColor = self.detailTextLabel.textColor;
// Cell
self.opaque = YES;
}
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
- (void)layoutSubviews {
[super layoutSubviews];
float desiredWidth = 70;
float desiredHeight = 70;
float leftMargin = 5;
float topMargin = 5;
float w=self.imageView.frame.size.width;
self.imageView.contentMode = UIViewContentModeScaleAspectFill;
self.imageView.clipsToBounds = YES;
if (w>desiredWidth) {
float widthSub = w - desiredWidth;
self.imageView.frame = CGRectMake(leftMargin,topMargin,desiredWidth,desiredHeight);
self.textLabel.frame = CGRectMake(self.textLabel.frame.origin.x-widthSub,self.textLabel.frame.origin.y,self.textLabel.frame.size.width+widthSub,self.textLabel.frame.size.height);
self.detailTextLabel.frame = CGRectMake(self.detailTextLabel.frame.origin.x-widthSub,self.detailTextLabel.frame.origin.y,self.detailTextLabel.frame.size.width+widthSub,self.detailTextLabel.frame.size.height);
}
}