Оптимизированный способ программного изменения всех цветов элементов моего UIView - PullRequest
3 голосов
/ 25 сентября 2011

У меня есть UIView с различными видами элементов внутри (UIButton, UIImageView, UIImageView анимации).В какой-то момент, когда пользователь выбирает его, я хочу переключить все это представление в оттенки серого.

В данный момент я делаю один элемент за другим, так что для примера мой элемент 1 моего UIView:

UIImage *newImg = [[myButton1 backgroundImageForState:UIControlStateNormal] convertToGrayscale];
[myButton1 setBackgroundImage:newImg forState:UIControlStateNormal];

Он работает нормально, но я получаю Предупреждение о Памяти (= 1), когда я делаю это ... Возможно, потому что я получил более 20 элементов в своем UIView для изменения (включая анимацию).

Итак, я хотел бы знать, есть ли лучший способ изменить все цвета элементов моего UIView?Как, например, смешивание белого квадрата в режиме Luminosity на верхней части моего UIView ... это было бы возможно?

Заранее спасибо!

1 Ответ

1 голос
/ 25 сентября 2011

Окончательный результат, вероятно, не использует много памяти, только промежуточные объекты, которые автоматически высвобождаются (включая объекты автоматического высвобождения, используемые API).

Рассмотрите возможность создания autoreleasePool внутри цикла, чтобы автоматически освобожденные объекты полностью освобождались при каждой итерации. Верхняя часть autoreleasePool довольно мала.

Пример:

for ( /*your loop */ ) {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    /* Your code */

    [pool drain];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...