2013-09-24 2 views
8

Я создаю UICollectionView и добавляю одну ячейку, которая является только subview, является UIButton. Эта кнопка имеет свой заголовок и изображение. Я проверил, что данные изображения верны в отладчике.Почему у UICollectionViewCell с UIButton есть монохромное/тонированное изображение?

Когда кнопка рисуется на экране, я вижу текст и изображение, однако изображение выглядит так, как если бы оно было заполнено цветом оттенка, затеняя все изображение, отличное от его формы.

Что мне здесь не хватает, чтобы показать это как обычная кнопка?

Update

Оказывается, это не относится к UICollectionView, а скорее все UIButtons в iOS7.

iOS 7 делает все изображения в кнопках, которые ведут себя как изображения шаблонов, используя альфа-канал изображения в сочетании с цветом оттенка для создания изображения (как изображения на панели вкладок). Там новый renderingMode собственность на UIImage, который по умолчанию в «автоматический», который позволяет контекст решить (что шаблон стиля для кнопок)

Это можно обойти, используя новый imageWithRenderingMode: метод на UIImage:

UIImage* myImage = [UIImage imageNamed:@"Foo.png"]; 
myImage = [myImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
[button setImage:myImage forState:UIControlStateNormal]; 

ответ

0

Самый простой способ избежать этого - использовать другой UIButtonType. Это UIButtonTypeSystem на IOS 7, который имеет такое поведение, так что вы можете использовать пользовательские кнопки вместо:

UIButton *button = [UIButton buttonWithType: UIButtonTypeCustom]; 
[button setImage:myImage forState:UIControlStateNormal]; 
0

Когда цвет фона lightText в UIButton в этом случае, он не будет закрывать изображение кнопки.

UIButton.backgroundColor = UIColor.lightText 
Смежные вопросы