![ios – CALayers永远不会调用它的委托的drawLayer:inContext:甚至在[layer setNeedsDisplay]和[layer display]之后,第1张 ios – CALayers永远不会调用它的委托的drawLayer:inContext:甚至在[layer setNeedsDisplay]和[layer display]之后,第1张](/aiimages/ios+%E2%80%93+CALayers%E6%B0%B8%E8%BF%9C%E4%B8%8D%E4%BC%9A%E8%B0%83%E7%94%A8%E5%AE%83%E7%9A%84%E5%A7%94%E6%89%98%E7%9A%84drawLayer%EF%BC%9AinContext%EF%BC%9A%E7%94%9A%E8%87%B3%E5%9C%A8%5Blayer+setNeedsDisplay%5D%E5%92%8C%5Blayer+display%5D%E4%B9%8B%E5%90%8E.png)
- (ID)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { UIVIEw *bg = [[UIVIEw alloc] initWithFrame:self.bounds]; // I have a property called 'bg' to reference the child UIVIEw self.bg = bg; [self addSubvIEw:self.bg]; // an NSObject subclass I use as a CALayer delegate MyLayerDelegate *drawer = [MyLayerDelegate new]; self.drawer = drawer; CAGradIEntLayer *layer = [CAGradIEntLayer layer];; layer.delegate = self.drawer; layer.name = @"bg"; [self.bg.layer addSublayer:layer]; [layer setNeedsdisplay]; [layer display]; } return self;} 在self.drawer我有:
- (voID)drawLayer:(CALayer *)layer inContext:(CGContextRef)context{ NSLog(@"layer called drawLayer"); // Some drawing goes here} 我尝试了很多不同的东西.我已经尝试在self.bg.layer上设置setNeedsdisplay,我在self.bg上尝试了setNeedsdisplay,我在addSublayer之前和之后尝试了[layer setNeedsdisplay],我在addSublayer之前和之后尝试了[图层显示].我曾尝试使用和不使用[图层显示]和[图层displayIfNeeded].
为什么图层拒绝绘制?
解决方法 图层框架必须为非零.这解决了这个问题:layer.frame = self.bg.bounds;[layer setNeedsdisplay];[self.bg.layer addSublayer:layer];总结
以上是内存溢出为你收集整理的ios – CALayers永远不会调用它的委托的drawLayer:inContext:甚至在[layer setNeedsDisplay]和[layer display]之后全部内容,希望文章能够帮你解决ios – CALayers永远不会调用它的委托的drawLayer:inContext:甚至在[layer setNeedsDisplay]和[layer display]之后所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)