7

アプリの場合UIButton、グラデーションと背景画像で塗りつぶされたものを作成する必要がありました。OS を iOS 5.1 から最近リリースされた iOS 6 にアップグレードするまでは、すべて問題なく動作していました。

シミュレーターの 2 つのスクリーンショットを次に示します。

iOS 5.1 のスクリーンショット

iO 6 のスクリーンショット

最初のスクリーンショットは、私が必要としている (そして実行した) ものを示しています。茶色の背景と灰色の放射が見えます。

以下は、同じボタンを使用したスクリーンショットですが、iOS 6 が実行されています。ご覧のとおり、グラデーションが消えて、 の下部に奇妙な白い帯が現れましたUIButton

これがバグか何かか調べましたが、何も見つかりませんでした。おそらく誰かが同じ問題に直面していますか? これがグラデーションの私のコードです

CAGradientLayer *gradient = [CAGradientLayer layer];
    gradient.frame = btnCountry.bounds;
    UIColor *colorTop = [UIColor colorWithRed:.992f green:.992f blue:.992f alpha:1];
    UIColor *colorBot = [UIColor colorWithRed:.788f green:.769f blue:.745f alpha:1];
    gradient.colors = [NSArray arrayWithObjects:(id)[colorTop CGColor], (id)[colorBot CGColor], nil];
    gradient.borderColor = [UIColor colorWithRed:.545f green:.506f blue:.459f alpha:1].CGColor;
    gradient.borderWidth = 1;

    gradient.masksToBounds = YES;
    gradient.cornerRadius = 11;
    [[btnCountry layer] insertSublayer:gradient atIndex:0];
4

3 に答える 3

11

これはios6では本当に奇妙な問題です。通常のようにグラデーションを設定するときに同じ問題に直面しました。

[myButton.layer insertSublayer:gradient atIndex:0];

だから私はボトムラインをこれに変更してみましたが、これはiOS6とIOSの下位バージョンでも完全に機能しました

[myButton.layer insertSublayer:gradient below:myButton.titleLabel.layer];

これが役立つことを願っています

于 2012-10-29T14:34:21.273 に答える
7

私のコメントでわかるように、問題はクラスから来ましたUIGroupTableViewCellBackground、私はそれを隠すだけです。私はこれが「クリーンな」解決策ではないと思います、もしあなたがより良い解決策を持っているなら、それについて聞いて喜ぶでしょう:-)

コードは次のとおりです。

for(UIView* subView in btnCountry.subviews)
    if([subView isKindOfClass:NSClassFromString(@"UIGroupTableViewCellBackground")])
        [subView setHidden:YES];
于 2012-09-25T07:49:04.097 に答える
2

インデックス位置1にレイヤーを挿入するとうまくいきます。

おそらく最善の解決策は、iOS のバージョンを確認し、それに応じてインデックス 0 または 1 に挿入することです。

于 2012-09-26T10:17:56.897 に答える