我有一个在iOS 6&已经这么做了多年。在同一个tableview中的iO7中,在cell.imageview的任一侧,它在下面显示的每个图像的两侧大约5mm处添加一些额外的填充,从而将我的cell.textLabel.text进一步向右移动。我怎么能删除这个我似乎无法在这个问题的任何地方找到答案?
答案 0 :(得分:9)
在iOS7中,默认情况下,UITableViewCell
的预定义属性imageView
向右缩进15pt 。
使用以下UITableViewCell
属性
indentationLevel
indentationWidth
shouldIndentWhileEditing
separatorInset
因此,创建自己的自定义UITableViewCell
是克服它的最佳方法
According to Apple,有两种很好的方法可以做到:
如果您希望单元格具有不同的内容组件并将它们布置在不同的位置,或者您希望单元格具有不同的行为特征,则有两种选择:
- 将子视图添加到单元格的内容视图中。
- 创建UITableViewCell的自定义子类。
由于您不喜欢子类化UITableViewCell
,因此您可以选择添加自定义子视图。
只需创建自己的图像视图和文本标签,然后通过代码或故事板添加它们。例如
//caution: simplied example
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//get the cell object
static NSString *CellIdentifier = @"myCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
//create your own labels and image view object, specify the frame
UILabel *mainLabel = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, 220.0, 15.0)];
[cell.contentView addSubview:mainLabel];
UILabel *secondLabel = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 20.0, 220.0, 25.0)];
[cell.contentView addSubview:secondLabel];
UIImageView *photo = [[UIImageView alloc] initWithFrame:CGRectMake(225.0, 0.0, 80.0, 45.0)];
[cell.contentView addSubview:photo];
//assign content
mainLabel.text = @"myMainTitle";
secondLabel.text = @"mySecondaryTitle";
photo.image = [UIImage imageNamed:@"myImage.png"];
return cell;
}
请注意,预定义的UITableViewCell
内容属性:cell.textLabel
,cell.detailTextLabel
和cell.imageView
未触及,因此他们会提醒{{1}并且不会显示。
希望这有帮助!
答案 1 :(得分:6)
我可能遇到了同样的问题,唯一对我有用的是设置图像框架:
cell.imageView.frame = CGRectMake( 0, 0, 50, 55 );
如果你是细胞的子类,那么最好做:
- (void) layoutSubviews
{
[super layoutSubviews];
self.imageView.frame = CGRectMake( 0, 0, 50, 55 );
}