他のもののサブレイヤーであるカスタムレイヤーがあります。問題は、私のレイヤーは、私が入るまでそのサイズを知ることができないということですdrawLayer:inContext:
.
レイヤーの境界/フレームを変更しないと、すべてが完全に描画されます。
フレーム/境界を変更する行を追加すると、背景は完璧に見えますが、コンテンツが存在しません。コンテンツが新しい (より大きな) 境界ではなく元の境界を切り取っているように見えるため、背景しか見えません。
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)context {
CGFloat initialGraphContentsWidth = graph.frame.size.width - graph.leftMargin;
CGFloat initialGraphContentsHeight = graph.frame.size.height - graph.bottomMargin - graphHelper.topMargin;
self.frame = CGRectMake(0, 0, initialGraphContentsWidth, initialGraphContentsHeight);
self.position = CGPointMake(graphHelper.leftMargin + 1, graphHelper.topMargin + 1);
self.backgroundColor = [UIColor greenColor].CGColor;
CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
CGContextAddRect(context, CGRectMake(0, 0, 20, 20));
}
では、境界を動的に変更してもコンテンツを表示するにはどうすればよいでしょうか?
CATransaction
デュレーションを 0 に設定しようとしましたが、何もしませんでした。