我已经从图层中创建了一个自定义按钮。我在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 上工作相同