11

在 iOS 6 和更早的版本中,uitableviewcell 的 imageView 一直定位到左侧,偏移量为 0。在 iOS 7 中,虽然这已经改变,现在有 15 点空间。我想像在 iOS 6 中一样定位 imageView。我已经使用 AKHighlightableAttributedCell 将 uitableviewcell 子类化以处理未突出显示的属性文本。因此,基于一些搜索,我添加了:

- (void) layoutSubviews
{
    [super layoutSubviews];
    // Makes imageView get placed in the corner
    self.imageView.frame = CGRectMake( 0, 0, 80, 80 );
}

问题是其他一切仍然没有得到重新定位,所以我认为必须有更好的方法来做到这一点。我读过一些人提到使用负偏移来移动所有内容,但我不确定这将如何处理约束,因为它需要针对每个方向正确缩放。我缺少一个更简单的解决方案吗?谢谢你。

4

1 回答 1

7

看来我的做法是正确的。关于字段之间分隔符的缺失部分是在 iOS 7 上设置插图。您可以在 viewdidload 或 viewwillload 中执行此操作并设置 self.tableView.separatorInset = UIEdgeInsetsMake(0, 0, 0, 0);

如果运行 iOS 7 或更新版本,您将需要添加检查,因为我相信这是一个新属性。更好的选择可能是通过选择表格视图然后将分隔符插入从默认设置为自定义来在情节提要中设置它。

这是重新定位 imageView 和 textLabel 的 layoutSubviews 方法。如果您有描述,请添加。

- (void) layoutSubviews
{
    [super layoutSubviews];
    // Makes imageView get placed in the corner
    self.imageView.frame = CGRectMake( 0, 0, 80, 80 );

    // Get textlabel frame
    //self.textLabel.backgroundColor = [UIColor blackColor];
    CGRect textlabelFrame = self.textLabel.frame;

    // Figure out new width
    textlabelFrame.size.width = textlabelFrame.size.width + textlabelFrame.origin.x - 90;
    // Change origin to what we want
    textlabelFrame.origin.x = 90;

    // Assign the the new frame to textLabel
    self.textLabel.frame = textlabelFrame;
}
于 2013-10-01T01:18:02.887 回答