Кто-нибудь когда-нибудь видел проблему [UIColor initWithPatternImage] игнорирования альфа-значений PNG? Если да, то какое исправление лучше всего?
Я использую png в качестве фонового слоя для моего массива объектов кнопок, и он содержит несколько предварительно установленных альфа-значений на пиксель в изображении, которое будет использоваться в качестве фона текстуры. Он отлично загружается как цвет узора / текстуры, но все ключевые прозрачные области отображаются как непрозрачный черный.
Важно, чтобы я получил правильные альфа-значения, чтобы изображения кнопок отображались правильно. Рамки кнопок не включают альфа-тени от фона, поскольку это не "кликабельная" часть кнопки. Кроме того, изображения моего объекта кнопки и фоновые изображения также используют прозрачность, поэтому ему действительно необходимо иметь чистый фон непосредственно за каждой кнопкой, чтобы обеспечить правильные текущие настройки цвета (нижний слой UIView будет иметь цвет фона, установленный на цвет, выбранный текущим пользователем). Установка только одного альфа-значения для слоя UIView, содержащего эту текстуру, тоже не подходит для моих нужд.
Любая помощь будет оценена. Мой текущий обходной путь - использовать полностью развернутую, многократно программируемую компоновку из нескольких UIImageView с использованием png вместо одного UIView с заливкой узором.
Вот фрагмент кода, но он довольно стандартен для превращения UIImage в UIColor для использования в качестве цвета узора / текстуры:
UIView *selectorView = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,320)];
UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"SelectorViewBackground.png"]];
selectorView.backgroundColor = background;
[mainView addSubview:selectorView]; // pattern background layer. Add UIButtons on top of this selectorView layer
[self addSubview:mainView]; // current user selected color set in mainView.
[selectorView release];
[background release];