Имейте в виду, что это маска с автоматическим изменением размера, а не маска с автоматическим изменением размера. Он ничего не делает, пока что-то не изменит размер.
То, что вы хотите сделать, это определить фреймы ваших представлений точно там, где вы хотите, чтобы они были в соответствии с текущим размером вашего родительского представления, то есть 300 x 480. Так, например,
redView = [[UIView alloc] initWithFrame:CGRectMake(100, 0, 200, 200)];
blueView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
Вы правильно устанавливаете маски авторазмера до горизонтального выравнивания. Если размер self.view изменится, то redView и blueView останутся заблокированными на полях.
Вы должны установить хотя бы одно из: гибкое верхнее поле, гибкое нижнее поле или гибкую высоту. В противном случае поведение не определено, если родительское представление изменяет высоту. Невозможно, чтобы все три из этих параметров оставались фиксированными в пределах двух разных высот.
Эта строка кода не имеет смысла:
[[self view] setAutoresizingMask:YES];
Это не ошибка компилятора, поскольку BOOL может быть преобразован в UIViewAutoresizing, который является перечислением. Результатом является то, что YES = 1 = UIViewAutoresizingF FlexibleLeftMargin. Вероятно, не то, что вы хотели. Скорее всего, вы хотели:
[[self view] setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
Если вы можете, вы должны делать все это в Интерфейсном Разработчике. Поскольку это WYSIWYG-редактор, вы можете SWYG («посмотрим, что вы получите»). Вы можете быстро поиграть с опциями и узнать, как они работают. Гораздо быстрее, чем редактировать - компилировать - запускать, чтобы увидеть эффекты. Даже если вы не можете / не будете использовать Interface Builder для своего проекта, попробуйте с ним пример проекта, чтобы узнать, как работает автоматическое изменение размера. Как только вы знаете, вы можете сделать это в коде с меньшим количеством проб и ошибок. Но обратите внимание на то, что включение поля полей на в Интерфейсном Разработчике эквивалентно отключению соответствующей опции FlexibleXYZMargin в коде .