像iPhone通讯录一样缩进分组单元格

3
我想要一个分组表格,第一部分有2行和1个ImageView,类似于联系人应用程序。
类似这样:截图 我该怎么做?
谢谢, Max
3个回答

3
其他解决方案需要您创建自己的背景图像并使用两个表格视图,这不太方便。我的做法是继承UITableViewCell并缩进背景视图,如下所示:
#define INDENT_WIDTH 84

...

- (void)layoutSubviews
{
    [super layoutSubviews];

    //Indent the background views.
    CGRect frame = self.backgroundView.frame;
    frame.origin.x = frame.origin.x + INDENT_WIDTH;
    frame.size.width = frame.size.width - INDENT_WIDTH;
    self.backgroundView.frame = frame;
    self.selectedBackgroundView.frame = frame;

   //Also indent the UIImageview that contains like a shadow image over the backgroundviews (in grouped tableview style only).
   for (UIView *subview in self.subviews) {
        if ([subview isKindOfClass:[UIImageView class]]) {
            CGRect frame = subview.frame;
            frame.origin.x = frame.origin.x + INDENT_WIDTH;
            frame.size.width = frame.size.width - INDENT_WIDTH;
            subview.frame = frame;
        }
   }
}

由于内容视图具有透明背景色,您可以在左侧放置一个UIImageView(例如,您的故事板单元格原型),然后您应该获得与“联系人”应用程序中的“添加联系人”视图相同的效果。


我仍然看到缩进单元格左侧的分隔线,但后来意识到它在UITableView中:[tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]; - Alex Nauda

1

0

您可以通过以下方式实现与屏幕截图相同的效果:

(1) 创建一个具有类似于UITableViewStyleGrouped样式背景颜色的父视图控制器。

(2) 将图片添加到UIImageView中,并将其作为(1)的子视图。

(3) 在右侧再次将UITableView (分组样式)添加为(1)的子视图。

适当地设置这两个子视图的框架和布局,使用委托将这两个子视图进行“逻辑连接”。

编辑:可以使用[UIColor colorWithPatternImage:(UIImage*)image]来实现背景颜色。只需从iPhone模拟器上的任何示例应用程序中裁剪背景即可。


这并没有达到他想要的效果 - 他希望随后的表格部分是全宽的。 - occulus
我曾经需要两个子视图同步滚动。左右两边。你也可以通过委托轻松实现这一点。在SO上有许多描述这一点的帖子。 - Bourne
简直不敢相信,即使在非编辑模式下,也没有一种简单的方法来调用缩进。无论如何...我知道方法,需要大量的工作来子类化整个世界 ;) - masgar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接