5
CALayer.contents
に画像を表示しようとすると邪悪な時間があります。それはむしろまっすぐ進むようですが、私が何をしてもイメージをレンダリングすることはできません。 CALayer
は、背景色とコーナー半径がわかるので、レンダリングがうまくいきますが、画像は読み込まれません。UALmageをCALayer.contentsに描画すると画像データがレンダリングされません
あなたがここで見ていると、適用されたマスクとCAGradientLayer
サブクラスです。内側の四角は、画像を表示したい場所で、サブクラスCAGradientLayer
のサブレイヤとして追加されています。
これを設定するコードはかなり簡単です。 init
で:setFrame
内の最後に
- (void)setImage:(UIImage *)image {
self.imageLayer.contents = (id)image.CGImage;
[self.imageLayer setNeedsDisplay];
}
、::後に続いて
self.imageLayer = [CALayer layer];
self.imageLayer.cornerRadius = kDefaultCornerRadius;
self.imageLayer.backgroundColor = [UIColor darkGrayColor].CGColor;
[self addSublayer:self.imageLayer];
、私は画像を設定
CGFloat imageSize = self.bounds.size.width - 2*kDefaultMargin;
[self.imageLayer setBounds:CGRectMake(0.0, 0.0, imageSize, imageSize)];
[self.imageLayer setPosition:CGPointMake(self.bounds.size.width/2.0f, kDefaultMargin + imageSize/2.0f)];
[self.imageLayer setNeedsDisplay];
私はすでに知っているかチェックしているもの:
- レイヤーはobvです私はそれが目に見えることで正しく明らかに追加されました。
- 画像が追加されて動作します。
[UIImage imageNamed:@"info.png"]
はコードの他の部分で使用されており、実際には表示され、イメージされています。 1xで16x16、2xで32x32です - コードは正しい論理順序で呼び出されています。
init
、setImage:
、setFrame
;
ここでは何が起こっていますか?
[この質問と同じ問題と解決策(http://stackoverflow.com/q/10060912/1218876)。 '[self.imageLayer setNeedsDisplay]'を呼び出さないでください。 –
確かに、私はそれを受け入れることができるので、それは答えではなく、コメントでなければなりません。 – coneybeare