В viewDidLoad я могу без проблем создать градиент:
CAGradientLayer *blueGradient = [[CAGradientLayer layer] retain];
blueGradient.frame = CGRectMake(gradientStartX,gradientStartY,gradientWidth,gradientHeight);
где градиентWith определяется устройством как 320 или 1024 в зависимости от ситуации.
Чего я не могу сделать, так это изменить его размер внутри willRotateToInterfaceOrientation: -- и, таким образом, избавиться от этого пустого черного пространства справа -- после того, как пользователь переключится в ландшафтный режим. (Панель навигации и панель вкладок ведут себя хорошо.)
(1) повторная калибровка новых размеров градиента в соответствии с новой средней точкой, (2) использование kCALayerMaxXMargin и (3) использование границ — все выглядело так, как будто они сделают свою работу. границы выглядели немного более интуитивными, поэтому я попробовал это.
Я не хочу признавать, что у меня нулевой прогресс.
Я скажу, что я был сведен к методу грубой силы, когда пробовал каждую перестановку self, view, layer, bounds, blueGradient и CGRect(gradientStartX,gradientStartY,newGradientWidth,newGradientHeight) с нулевым успехом.
Это несложно. Мое непонимание усложняет задачу. Кто-нибудь там «Был там, сделал это»?