Я наблюдал то же самое в своем приложении некоторое время назад, и кажется, что setNeedsLayout
влияет только на подпредставления представления и не перемещается вниз.Если вы используете пользовательские представления, вы можете легко разделить их на подклассы и перебрать подпредставления в setNeedsLayout
и выполнить явное setNeedsLayout
для них.
Если вы хотите, чтобы это было поведение по умолчанию, вы можете переопределить методв категории, но я бы на самом деле этого не сделал, так как это влияет на все представления и может привести к производительности и другим неожиданным проблемам.
Вы можете сделать что-то подобное
@interface UIView (Layout)
- (void)setNeedsLayoutRecursively;
@end
@implementation UIView (Layout)
- (void)setNeedsLayoutRecursively {
for (UIView *view in self.subviews) {
[view setNeedsLayoutRecursively];
}
[self setNeedsLayout];
}
@end
напечатанов браузере, не проверено