Пользовательский макет UITableViewHeaderFooterView

Итак, я просто попробовал подклассу UITableViewHeaderFooterView и выровнял метки так, как хочу, переопределив -layoutSubviews.

Когда я вызываю super и меняю метку frame, однако приложение оказывается застрявшим в бесконечном цикле -layoutSubviews.

Мой код выглядит следующим образом:

- (void)layoutSubviews
{
    [super layoutSubviews];
    self.textLabel.frame = CGRectMake(10.0, 10.0, 300.0, 40.0);
}

Любые идеи о том, как исправить это?

Ответ 1

Кажется, что попытка изменить фрейм backgroundView или contentView не только вызывает бесконечный цикл, но и игнорирует любые значения, установленные вами для их кадров, что делает их существование бесполезным. Я вернулся к использованию контейнеров backgroundView и contentView в качестве немых контейнеров для своих собственных подзонов с их собственными фоновыми изображениями и свойствами макета.: S

Ответ 2

У меня возникла аналогичная проблема, и я решил установить кадр в drawRect:(CGRect) следующим образом:

- (void)drawRect:(CGRect)rect {
    CGRect frame = self.textLabel.frame;
    frame.origin.x = 0;
    frame.size.width = self.frame.size.width;
    self.textLabel.frame = frame; 
}