在分组的UITableView中移动行的位置

时间:2010-10-11 21:45:50

标签: iphone uitableview

iPhone上的“联系人”应用程序似乎使用分组的UITableView,其外观类似于图像外的图像,并且图像旁边的文本行被移动。像这样: alt text

如何创建这样的布局,前三行放置在与其他行不同的X位置?

我尝试通过覆盖修改单元格的frame.origin.x和frame.size initWithStyle:我的自定义UITableViewCell类中的reuseIdentifier方法,但没有运气。

@implementation MyCustomCell

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])
    {
        CGSize offset = CGSizeMake(30, 30);         
        CGRect originalFrame = self.frame;

        CGFloat newX = originalFrame.origin.x + offset.width;
        CGFloat newWidth = originalFrame.size.width - offset.width;

        CGRect newFrame = CGRectMake(newX, originalFrame.origin.y,
                                     newWidth, originalFrame.size.height);      
        self.frame = newFrame;      
    }

    return self;
}
@end

2 个答案:

答案 0 :(得分:1)

尝试在表格视图委托上实施tableView:indentationLevelForRowAtIndexPath:

答案 1 :(得分:1)

不确定这是否是犹太人的方式,而不是改变init方法中的框架尺寸,而是覆盖MyCustomCell的'layoutSubviews'。

这对我有用:

- (void)layoutSubviews
{
    [super layoutSubviews];

    CGRect origFrame = self.frame;      
    CGSize offset = CGSizeMake(30, 30);

    CGFloat newX = originalFrame.origin.x + offset.width;
    CGFloat newWidth = originalFrame.size.width - offset.width;

    CGRect newFrame = CGRectMake(newX, originalFrame.origin.y,
                                 newWidth, originalFrame.size.height);    
    self.frame = newFrame;
}