8

我创建了一个 UICollectionView 并添加了一个唯一的子视图是 UIButton 的单元格。该按钮具有其标题和图像集。我已经在调试器中验证了图像数据是正确的。

当按钮在屏幕上绘制时,我看到了文本和图像,但是图像看起来好像已经填充了淡色,遮住了除其形状之外的所有图像。

我在这里缺少什么让这个显示为普通按钮应该?

更新

事实证明,这不是特定于 UICollectionView,而是 iOS7 中的所有 UIButton。

iOS 7 使按钮中的所有图像都像模板图像一样使用图像的 alpha 通道与色调颜色相结合来生成图像(很像标签栏中的图像)。UIImage 上有一个新的 renderingMode 属性,默认为“自动”,它让上下文决定(这是按钮的模板样式)

这可以使用 UIImage 上的新imageWithRenderingMode : 方法来规避:

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

2 回答 2

0

避免这种情况的最简单方法是使用不同的UIButtonType. 它UIButtonTypeSystem在具有这种行为的 IOS 7 上,因此您可以改用自定义按钮:

UIButton *button = [UIButton buttonWithType: UIButtonTypeCustom];
[button setImage:myImage forState:UIControlStateNormal];
于 2014-01-07T20:27:11.187 回答
0

当 UIButton 的背景色为 lightText 时,不会关闭按钮图片。

UIButton.backgroundColor = UIColor.lightText
于 2017-10-19T08:18:30.097 回答