私はいくつか色付きの背景を持つUILabels
を持っており、私はCAGradientLayers
を以下のように追加しました。 iPhone 4とiPhone 5SでiPhone 6のCAGradientLayerを間違って表示
CAGradientLayer * gradientLayer = [CAGradientLayer layer];
gradientLayer.colors = [NSArray arrayWithObjects:
(id) [UIColor colorWithWhite:1 alpha:0.3].CGColor,
(id) [UIColor colorWithWhite:0.5 alpha:0.3].CGColor, nil];
gradientLayer.frame = label.bounds;
gradientLayer.cornerRadius = label.layer.cornerRadius;
[label.layer insertSublayer:gradientLayer atIndex:0];
それは完璧に見えるが、iPhone 6SにCAGradientLayers
は、次のスクリーンショットのように水平に置き忘れています。
この問題は、同様にUIButtonsために起こります。
私はiOS 9.3を実行しています。
ここで、コントローラのライフサイクルは、そのコードが配置されているか表示されていますか? – beyowulf
ラベルの「ボタン」フレームが変化した場合、グラデーションレイヤーを変更する必要があります。たとえば、ラベルが自動レイアウトでレイアウトされていて、ビューが回転している場合は、グラデーションのフレームを更新する必要があります。ビューコントローラの 'viewDidLayoutSubviews'でこれを行うことができます。あるいは、ラベル/ボタンのグラデーションをサブクラス化し、' layoutSubviews'でグラディエントフレームを更新することができます。 – keithbhunter
@beyowulfコードはviewDidLoadメソッドにあります。 –