2010-07-23 3 views
2

Добрый день;CALayer или UIView backgroundColor UIImage на iOS 4

Я не уверен, что изменилось, чтобы это не сработало. На 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];  

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

ответ

2

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

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

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

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

Возможно, изображения backgournd в IOS 3, где это делается в представлении/слое, и, возможно, Apple решила не дублировать фоновое изображение по сравнению с подвью/подуровнем и удалить поддержку для него.

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

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

Смежные вопросы