iphone: изменение размера градиента после перехода с книжной на альбомную

В 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) с нулевым успехом.

Это несложно. Мое непонимание усложняет задачу. Кто-нибудь там «Был там, сделал это»?


person d_CFO    schedule 09.05.2010    source источник


Ответы (1)


Изменяется ли размер слоя автоматически? Если да, то просто

[blueGradient setNeedsDisplay];

должен сделать трюк.

Надеюсь, это было полезно, Пол

person Pawel    schedule 09.05.2010
comment
И вы устанавливаете изменение размера, используя вид пружин и распорок в IB, или устанавливая свойство contentMode представлений. - person Paul Lynch; 09.05.2010
comment
Пол -- Нет, не IB. Я тоже ничего не делаю с contentMode. Как мы говорим на этой стороне пруда, обычная ваниль. Павел -- [blueGradient setNeedsDisplay] приводит к необъявленному blueGradient Оба -- Вау, быстрые ответы! Спасибо. - person d_CFO; 09.05.2010
comment
blueGradient — это ссылка на ваш градиентный слой — вам нужно сохранить его, чтобы вызвать его, когда вращение завершится. - person Pawel; 09.05.2010