我创建了一个子类,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);
}
}