iphone - iOS 5.1 : -[UIColor colorWithPatternImage:] background color draws solid black

标签 iphone objective-c ios uicolor

在今天发布的 iOS 5.1 GM 中测试我的应用程序时,我注意到我的一些 View 绘制的是纯黑色,而不是它们的图案背景颜色。完全相同的代码在以前的 iOS 版本上运行良好(在 4.2 - 5.0.1 上测试)。

查看截图: Screenshots of issue

有没有人遇到过这种情况?有解决方法吗?

最佳答案

回答我自己的问题(我花了几天时间调试它,所以希望这可以节省其他人一些时间;)):

根本原因涉及使用带图案的 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/

相关文章:

objective-c - 预处理器表达式 Xcode 开头的无效标记

ios - 无法获取Parse block 中NSLog的来源?

ios - 如何从包含我的 UIViewController 的 UITableViewController 中显示新 View ?

iPhone:无法对多对关系进行 NSSortDescriptor。如何排序?

ios - 将 NSManagedObject 设置为 nil;

objective-c - 用 UIActivityIndi​​catorView 替换 UIBarButtonItem

ios - 清除带有绘制内容的 UIView 上的背景色

objective-c - AVPlayerLayer 获取图像到 UIImageView 缓冲区

iphone - Phonegap 构建时没有架构问题

iphone - iOS访问字符串中的字符