2012-03-07 7 views
8

今日のiOS 5.1 GMのリリースでアプリケーションをテストしているうちに、私の見解の一部がパターン化された背景色ではなく黒く塗りつぶされていることに気付きました。以前のiOSリリース(4.2 - 5.0.1でテスト済み)では全く同じコードが正常に動作します。iOS 5.1: - [UIColor colorWithPatternImage:]背景色が黒く塗りつぶされる

参照のスクリーンショット: Screenshots of issue

誰がこれを経験していますか?回避策はありますか?

答えて

12

自分の質問に答える(それがうまくいけば、これは他の誰かがいくつかの時間を節約し、これをデバッグするために数日かかった;)):

根本的な原因は、背景として)+[UIColor colorWithPatternImage:]を経由してパターン化UIColorを(使用することを含みます同じイメージを持つ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]; 

両方のビューが黒描画、アプリケーションが中断されるまで、画像のすべての他の用途は黒描画キャッシュ問題があるように見える/再開しました。

私はこの問題を報告するためにAppleに問題#10795514を提出しましたが、それは5.1になったようです。この問題を軽減するには、http://iccir.com/public/radar/Radar10795514.zip

があります。私が見つけた唯一の回避策は、ビュー階層を平坦化し、同じビューでパターンイメージを2回描画することでした。

+1

+1 - 共有いただきありがとうございます。 – Till

+0

実際の問題は、colorWithPatternImageがios5のUIImageViewには適用されないことです。明らかにUIViewを使用する必要があります。 – anders

0
私はこのようなUIScrollViewの上colorWithPatternImageを使用していたiPadでのiOS 5.1でこの問題を抱えていた

:元に、しかし、

scrollView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"YOURIMAGE.jpg"]]; 

これはiOSの6で動作します(超えた例のiPad2との) iPadでは、iOSを5.1.1にしかアップデートできません。これは、白や別のソリッドカラーで表示されます。私はiOSの6とiOS 5.1でこれをテストしてみたので、あなたならば、それはまた、iPhoneに適用されるべきである

scrollView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"YOURIMAGE.png"]]; 

:この修正は、このようscrollViewのbackgroundViewを設定し、わずかに少ない魅力的な方法を使用することですそこに問題があります。

関連する問題