На самом деле предыдущий ответ (вы не можете установить uiview.layer.frame, поскольку он всегда заполняет uiview) близок, но не совсем завершен. Прочитав ответ, я зарегистрировался на исходном сайте и прокомментировал, что у учебника были проблемы. При этом я обнаружил, что уже были комментарии, которых я не видел в своем первом проходе, которые касались этого. Используя их, я начал проводить тестирование.
Нижняя строка, если вы переместите код настройки self.view.layer.frame из viewDidLoad в viewWillAppear, он работает нормально. Это означает, что вы можете изменить рамку корневого слоя вида. Однако, если вы сделаете это в viewDidLoad, это будет отменено позже.
Однако предыдущий ответ все еще довольно близок. Я NSLog'ed рамку корневого слоя и рамку вида. Изменение рамки корневого слоя приводит к изменению рамки просмотра. Таким образом, ответ, что view.layer.frame всегда заполняет view.frame, является правильным. Однако установка рамки слоя сбрасывает рамку вида для соответствия. (Я предполагаю, что свойство uiview.frame просто возвращает uiview.layer.frame ...)
Итак, в какой-то момент времени между 2010 и сегодняшним днем что-то в окружающей среде изменилось. В частности, после viewDidLoad и перед viewWillAppear фрейм uiview / layer, по-видимому, сбрасывается к указанному значению пера. Это отменяет любые изменения в viewDidLoad. Изменения, сделанные в viewWillAppear, выглядят как прилипшие.
Ответ Робина сделал меня на правильном пути, но я хотел изложить полный ответ.