在測試我在今天的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