Смещение размещения строк в сгруппированном UITableView - PullRequest
2 голосов
/ 12 октября 2010

Приложение «Контакты» на iPhone, похоже, использует сгруппированный UITableView с тем, что выглядит как изображение вне таблицы, а строки текста рядом с изображением сдвигаются. Как это: alt text

Как вы собираетесь создавать макет, подобный этому, с первыми тремя строками, расположенными в позиции X, отличной от других строк?

Я попытался изменить ячейки frame.origin.x и frame.size, переопределив initWithStyle: метод reuseIdentifier внутри моего пользовательского класса UITableViewCell, но не повезло.

@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 ]

1 голос
/ 12 октября 2010

Не уверен, что это кошерный способ сделать это, но вместо изменения размеров фрейма в методе init вместо этого переопределите 'layoutSubviews' MyCustomCell.

Это сработало для меня:

- (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;
}
1 голос
/ 12 октября 2010

Попробуйте реализовать tableView:indentationLevelForRowAtIndexPath: в делегате табличного представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...