Пользовательский макет 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;
}