В документации layoutSubviews, Apple говорит:Как реализовать sizeToFit, если это зависит от layoutSubviews?
Вы не должны вызывать этот метод напрямую.
Я пытаюсь реализовать sizeToFit
. Я хочу, чтобы он помещал узкую ограничительную рамку во все подзоны. Перед определением такого ограничивающего прямоугольника мне нужно подобрать надстройки. Это означает, что я должен позвонить layoutSubviews
, на что Apple хмурится. Как я могу решить эту дилемму, не нарушая правила Apple?
- (void)layoutSubviews
{
[super layoutSubviews];
self.view0.frame = something;
self.view1.frame = somethingElse;
}
- (void)sizeToFit
{
[self layoutSubviews];
self.frame = CGRectMake(
self.frame.origin.x,
self.frame.origin.y,
MAX(
self.view0.frame.origin.x + self.view0.frame.size.width,
self.view1.frame.origin.x + self.view1.frame.size.width
),
MAX(
self.view0.frame.origin.y + self.view0.frame.size.height,
self.view1.frame.origin.y + self.view1.frame.size.height
)
);
}
Обратите внимание, что вы не должны переопределять '-sizeToFit'. Скорее реализуйте '-sizeThatFits:'. –