Я использую autolayout уже пару недель. В настоящее время я использую стороннюю библиотеку под названием FLKAutoLayout, которая упрощает процесс. Я нахожусь в точке, где я могу создавать представления так, как хочу, обычно без проблем. Однако за последние 4 дня на работе я боролся с автомакетом, когда задействованы контроллеры просмотра. Я в порядке со всеми видами UIViews... но по какой-то причине каждый viewcontroller.view - это полный демон. У меня не было ничего, кроме проблем с получением размера viewcontroller.view так, как я хочу, и еще более глубокая проблема заключается в том, что UIView дочерних контроллеров представления не получают должным образом события при использовании автомакета. дочерние контроллеры просмотра прекрасно работают при назначении фреймов вручную, но все ломается с автомакетом.
Я не понимаю, что такого особенного в UIView контроллера представления, что отличает его от всех остальных... Мой разум тает от разочарования. ios возится с моими представлениями контроллера просмотра за кулисами или что-то в этом роде?
На изображении красная область принадлежит дочернему контроллеру представления. Эта область не должна выходить за пределы самого нижнего подвида (карточка с надписью «три»). Это должно быть легко, и я могу заставить его работать нормально с кучей обычных UIViews, но поскольку это контроллер представления, все ломается...
Может кто-нибудь пролить свет на то, что это я не знаю. Любые выводы по потенциальным проблемам очень ценятся.
Спасибо за чтение.
Обновление: проблема может быть связана с неоднозначными ограничениями
UIView *box = [[UIView alloc]init];
[box addSubview:imageView];
[box addSubview:nameLabel];
imageView constrainWidth:@"32" height:@"32"];
[imageView alignTop:@">=0" leading:@"0" bottom:@"<=0" trailing:@"<=0" toView:box];
[imageView alignCenterYWithView:box predicate:@"0"];
[nameLabel constrainLeadingSpaceToView:imageView predicate:@"5"];
[nameLabel alignTop:@">=0" leading:@">=0" bottom:@"<=0" trailing:@"<=0" toView:box];
[nameLabel alignCenterYWithView:box predicate:@"0"];
[self addSubview:box];
[box alignTop:@"5" leading:@"5" bottom:@"-5" trailing:@"-5" toView:self];
В приведенном выше примере неоднозначный макет, но я не могу понять, что с ним не так...