CALayer или UIView backgroundColor UIImage на iOS 4 - PullRequest
2 голосов
/ 23 июля 2010

Добрый день всем;

Я не уверен, что изменилось, чтобы это не заработало. На iOS 3 SDK следующий код работал нормально в классе CATiledLayer:

- (void)drawInContext:(CGContextRef)context {
    UIImage* image = [[ResourcesManager sharedResourcesManager] getUIImageFromArray:Image_Cell_Background Index:[mazeCell zone]];
    UIColor* color = [[UIColor alloc] initWithPatternImage:image];

    [self setBackgroundColor:[color CGColor]];
    [color release];    

Однако при компиляции для iOS 4 и выполнении на симуляторе изображение не отображается. Я озадачен тем более, что изображения, добавленные в качестве подслоев, отображаются очень хорошо. Только фон не рендерится.

1 Ответ

2 голосов
/ 27 июля 2010

Хорошо, потратив на это несколько дней, я нашел обходной путь.

Во-первых, я попытался сделать это в UIView, но у меня остались те же проблемы.Затем я попробовал другие типы компонентов графического интерфейса, которые имеют свойство backgroundColor.

Все они создали одну и ту же проблему.Из того, что я могу сказать, это похоже на ошибку и что-то связанное с новым процессом загрузки / кэширования изображений, который интерпретирует, использовать ли графику HD или SD.

По сути, это обходной путь для загрузкифоновое изображение в качестве подпредставления или подслоя (в зависимости от вашей реализации) и либо отправьте его обратно (нижняя часть иерархии), либо загрузите его в первую очередь перед любым другим подпредставлением / подуровнем.Делая это в представлении / слое и, возможно, Apple решила не обрабатывать фоновое изображение дважды по сравнению с подпредставлением / подслоем и убрала его поддержку.

Однако, по крайней мере, вы можете установить цвет фона или даже прозрачный цвет.Я проверял это.

В любом случае, используйте этот обходной путь, пока либо яблоко не объяснит, почему они приняли это решение, либо исправит SDK, чтобы он его обрабатывал.Я заинтересован в том, чтобы узнать, что форумы разработчиков Apple говорили об этой проблеме (я уверен, что она поднималась).Я еще не участвую в программе, так как я все еще на альфа-стадии, и как только я попаду в бета-версию, я зарегистрируюсь.

...