Ладно, кажется, нет простого способа решить мою проблему.
Решение состоит в том, чтобы оценить класс QTableViewCell
.
Я переписал его так, чтобы текстовая метка была доминирующей.
- (void)layoutSubviews {
[super layoutSubviews];
CGSize valueSize = CGSizeZero;
if (self.textLabel.text!=nil)
valueSize = [self.textLabel.text sizeWithFont:self.textLabel.font];
CGSize imageSize = CGSizeZero;
if (self.imageView!=nil)
imageSize = self.imageView.frame.size;
if (self.detailTextLabel.text ==nil) {
CGRect labelFrame = self.textLabel.frame;
self.textLabel.frame = CGRectMake(labelFrame.origin.x, labelFrame.origin.y,
self.contentView.bounds.size.width - imageSize.width - 20, labelFrame.size.height);
self.textLabel.backgroundColor = [UIColor greenColor];
}
else{
CGRect labelFrame = self.textLabel.frame;
self.textLabel.frame = CGRectMake(labelFrame.origin.x, labelFrame.origin.y,
valueSize.width, labelFrame.size.height);
}
CGRect detailsFrame = self.detailTextLabel.frame;
self.detailTextLabel.frame = CGRectMake(self.textLabel.frame.origin.x + valueSize.width,
detailsFrame.origin.y, self.contentView.bounds.size.width - valueSize.width -
imageSize.width - 20, detailsFrame.size.height);
}
Если у вас есть как длинные заголовки, так и длинные значения, вы можете просто добавить следующий код, чтобы разделить поровну одинаково.
if (valueSize.width > self.contentView.bounds.size.width/2) {
valueSize.width = self.contentView.bounds.size.width/2;
}