在测试我在今天的iOS 5.1 GM版本的应用程序,我发现我的一些看法正在绘制纯黑色,而不是他们的底纹颜色。完全相同的代码在以前的iOS版本上工作正常(在4.2-5.0.1上测试)。的iOS 5.1: - [的UIColor colorWithPatternImage:]背景色平实的黑色
查看截图:
有其他人的经验?有没有解决方法?
在测试我在今天的iOS 5.1 GM版本的应用程序,我发现我的一些看法正在绘制纯黑色,而不是他们的底纹颜色。完全相同的代码在以前的iOS版本上工作正常(在4.2-5.0.1上测试)。的iOS 5.1: - [的UIColor colorWithPatternImage:]背景色平实的黑色
查看截图:
有其他人的经验?有没有解决方法?
回答我的问题(我花了几天的调试这一点,所以希望这样可以节省别人一些时间;)):
的根本原因涉及到使用图案的UIColor(通过+[UIColor colorWithPatternImage:]
)作为背景使用相同图像的UIImageView上的UIView上的颜色。
实施例:
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];
两种观点绘制黑色,并且似乎有一个缓存问题,即,直到应用程序被暂停的图像的所有其它用途绘制黑色/恢复。
我申请问题#10795514与苹果报告这一点,但它看起来像它制作成5.1。这个问题的减少,请访问:http://iccir.com/public/radar/Radar10795514.zip
我发现的唯一的解决方法是展平视图层次,并在同一个视图中绘制图形图像的两倍。
我在iPad我在那里使用colorWithPatternImage上这样一个UIScrollView具有与iOS 5.1这样的问题:
scrollView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"YOURIMAGE.jpg"]];
这工作在IOS 6(例如iPad2和以后),但是,在原稿iPad的,在那里你可以只更新iOS 5.1.1,这将显示白色或你的地方定义的另一个纯色。解决方法是使用在您设置了滚动的backgroundView这样一个稍微不那么有吸引力的方法:
scrollView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"YOURIMAGE.png"]];
我在的iOS 6和iOS 5.1测试这一点,所以它也应该,如果你适用于iPhone在那里遇到问题。
+1 - 感谢分享! – Till 2012-03-07 22:25:18
真正的问题是colorWithPatternImage不适的UIImageView在iOS5中,你应该使用显然一个UIView .... – anders 2013-10-02 17:56:39