在今天发布的 iOS 5.1 GM 中测试我的应用程序时,我注意到我的一些 View 绘制的是纯黑色,而不是它们的图案背景颜色。完全相同的代码在以前的 iOS 版本上运行良好(在 4.2 - 5.0.1 上测试)。
查看截图:
有没有人遇到过这种情况?有解决方法吗?
最佳答案
回答我自己的问题(我花了几天时间调试它,所以希望这可以节省其他人一些时间;)):
根本原因涉及使用带图案的 UIColor(通过 +[UIColor colorWithPatternImage:]
)作为 UIView 的背景色,该 UIView 位于具有相同图像的 UIImageView 之上。
例子:
UIImageView *imageView = [[UIImageView alloc] initWithImage:anImage];
[_containerView addSubview:imageView];
UIColor *patternColor = [UIColor colorWithPatternImage:anImage];
UIView *patternView = [[UIView alloc] initWithFrame:frame];
[patternView setBackgroundColor:patternColor];
[_containerView addSubview:patternView];
两个 View 都绘制为黑色,并且似乎存在缓存问题,在应用程序暂停/恢复之前,图像的所有其他用途都绘制为黑色。
我向 Apple 提交了问题 #10795514 来报告这一点,但它看起来像是进入了 5.1。此问题的减少可在以下位置获得:http://iccir.com/public/radar/Radar10795514.zip
我发现的唯一解决方法是展平 View 层次结构并在同一 View 中两次绘制图案图像。
关于iphone - iOS 5.1 : -[UIColor colorWithPatternImage:] background color draws solid black,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9609688/