我有一个自定义图层,它是其他内容的子图层。问题是,在我进入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));
}
那么如何动态改变我的界限并仍然让我的内容出现?
我尝试设置一个持续时间为0的CATransaction
,但这没有做任何事情。
答案 0 :(得分:0)
您是否尝试在更新帧/边界后调用setNeedsDisplay
?
因此,例如,如果您有CALayer
名为layer
,则可以尝试以下操作:
layer.frame = CGRectMake(20, 40, 100, 300);
// tell the layer that it needs to refreshed
[layer setNeedsDisplay];