我创建一个UICollectionView并添加一个单独的单元格,其中唯一的子视图是UIButton。该按钮具有标题和图像集。我已经验证了调试器中的图像数据是否正确。
当在屏幕上绘制按钮时,我看到文本和图像,但图像看起来好像已经填充了色调颜色,遮挡了除形状之外的所有图像。
我在这里错过了什么才能让它显示为普通按钮?
事实证明,这不是特定于UICollectionView,而是iOS7中的所有UIButtons。
iOS 7使按钮中的所有图像都像模板图像一样使用图像的Alpha通道与色调颜色一致生成图像(非常类似于标签栏中的图像)。在UIImage上有一个新的renderingMode属性,默认为“自动”,允许上下文决定(这是按钮的模板样式)
可以使用UIImage上的新imageWithRenderingMode:方法来规避这一点:
UIImage* myImage = [UIImage imageNamed:@"Foo.png"];
myImage = [myImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
[button setImage:myImage forState:UIControlStateNormal];
答案 0 :(得分:0)
避免这种情况的最简单方法是使用不同的UIButtonType
。 IOS 7上的UIButtonTypeSystem
具有此行为,因此您可以使用自定义按钮:
UIButton *button = [UIButton buttonWithType: UIButtonTypeCustom];
[button setImage:myImage forState:UIControlStateNormal];
答案 1 :(得分:0)
当UIButton的背景颜色以这种方式为lightText时,它不会关闭按钮图像。
UIButton.backgroundColor = UIColor.lightText