0

MTAnimatedLabelにコードが表示されます

 CAGradientLayer *gradientLayer  = (CAGradientLayer *)self.layer;
gradientLayer.backgroundColor   = [super.textColor CGColor];
gradientLayer.startPoint        = CGPointMake(-self.gradientWidth, 0.);
gradientLayer.endPoint          = CGPointMake(0., 0.);
gradientLayer.colors            = [NSArray arrayWithObjects:(id)[self.textColor CGColor],(id)[self.tint CGColor], (id)[self.textColor CGColor], nil];

selfは UILabel です。ドキュメントから、レイヤーは読み取り専用である必要がありますが、このレポではなぜ機能するのかわかりません。

だから私は自分のプログラムでこれらのコードを試します。

 UIView *gradientView = [[UIView alloc] initWithFrame:textLayer.frame];
[self.view addSubview:gradientView];
CAGradientLayer *gradient = (CAGradientLayer*)gradientView.layer;
gradient.startPoint = CGPointMake(-0.4, 0.0);
gradient.endPoint = CGPointMake(0.0, 0.0);
gradient.colors = @[(id)[UIColor darkGrayColor].CGColor, (id)[UIColor whiteColor].CGColor, (id)[UIColor darkGrayColor].CGColor];
gradient.backgroundColor = [UIColor clearColor].CGColor;
gradient.frame = textLayer.frame

エラーがスローされます: -[CALayer setColors:]: unrecognized selector sent to instance 0x8f8dca0

コードを実行できない理由がわかりません。誰でも私を助けてくれることを願っています。

4

1 に答える 1

2

見逃したようです 追加

+ (Class)layerClass
{
    return [CAGradientLayer class];
}

ビュー レイヤーのグラデーションを作成するには、デフォルトでこのメソッドは CALayer を返します。これにはcolorsプロパティがありません。 UIView クラス リファレンスを参照してください。

于 2014-02-27T16:17:06.257 に答える