レイヤーからカスタム ボタンを作成しました。でたくさんのレイヤーを作成しますinit
。それらを変更*するまで、すべてが期待どおりに機能します。問題が発生するのは実際のデバイスのみであり、シミュレーターではコードが期待どおりに動作します。
needsDisplay と needsLayout を に設定して、レイヤーを強制的にレンダリングしようとしましたYES
。
-(void) setBackgroundColor:(UIColor *)backgroundColor
{
//return; // if I return here, the button gets initialized with it's default royal blue color. This works correctly on the simulator and device
[primaryBackground setColors: [NSArray arrayWithObject:(id)backgroundColor.CGColor]];
//return; //if I return here, primaryBackground will display a clear background on the device, but will display CGColor on the simulator.
CALayer* ll = [CALayer layer];
ll.frame=self.frame;
ll.cornerRadius=primaryBackground.cornerRadius;
[ll setBackgroundColor:backgroundColor.CGColor];
[primaryBackground addSublayer:ll];
//if I return here, primaryBackground will display the "expected" results on both platforms. IE: it dispalys the new layer, but not it's background color.
}
シミュレーター
デバイス
テスト
iOS 5.1 と 4.2 でテストしましたが、結果は同じでした。シミュレーターのバージョン 4.1、4.2、および 5.1 で同じように動作するようです