0

我有一个自定义层,它是其他东西的子层。问题是,我的图层在进入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 的 a,但没有任何效果。

4

1 回答 1

0

您是否setNeedsDisplay在更新框架/边界后尝试调用?

因此,例如,如果您有一个CALayer被调用的layer,您可以尝试以下操作:

layer.frame = CGRectMake(20, 40, 100, 300);
// tell the layer that it needs to refreshed
[layer setNeedsDisplay];
于 2012-04-22T07:49:05.993 回答