次のコードのみを含むプレーンなUIViewサブクラス:
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
// Initialization code
CAGradientLayer* gradientLayer = [CAGradientLayer layer];
gradientLayer.colors = [NSArray arrayWithObjects:[UIColor whiteColor], [UIColor blackColor], nil];
gradientLayer.locations = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0], [NSNumber numberWithFloat:1.0], nil];
[self.layer addSublayer:gradientLayer];
return self;
}
EXC_BAD_ACCESSを使用してランタイムを強制終了します(いいえ、要求する前にゾンビはありません)。
また、CAGradientLayerが過剰にリリースされることはありません。レイヤーに複数のフローティング保持を配置しても効果はありません。
(ちなみに、これまで行ってきたどのプロジェクトでも、CAGradientLayerが実際に機能するのを見たことがありません。呪われていると思います:)。アニメーション化されたグラデーションが必要な場合を除いて、これは使用しません。AppleのCGGradientクラスはconst配列のみをサポートしているため、アニメーションコードはひどくバグが発生しやすくなります)