gpt4 book ai didi

ios - CAShapeLayer 未在 iPad 视网膜模式下的模拟器中绘制

转载 作者:可可西里 更新时间:2023-11-01 06:16:42 26 4
gpt4 key购买 nike

我有一小段代码,它绘制了一个圆作为 CAShapeLayer:

- (void) viewWillAppear:(BOOL)animated {
CGFloat size = MIN(self.view.frame.size.width, self.view.frame.size.height);
CAShapeLayer *circleLayer = [CAShapeLayer layer];
circleLayer.fillColor = [[UIColor redColor] CGColor];
circleLayer.frame = CGRectMake((self.view.frame.size.width - size) / 2.0 ,(self.view.frame.size.height - size) / 2.0, size, size);
CGMutablePathRef pathRef = CGPathCreateMutable();
CGPathAddEllipseInRect(pathRef, NULL, CGRectMake(0, 0, size, size));
circleLayer.path = pathRef;
CGPathRelease(pathRef);

[self.view.layer addSublayer:circleLayer];
}

圆形在 iPad 2 和非视网膜模式下的模拟器中正确显示。当我将模拟器切换到视网膜模式时,圆圈根本不显示。不幸的是,我还没有真正的 iPad 3,所以我不能说它是否适用于实际设备。谁能解释一下,我做错了什么?

更新:我将此作为错误报告给了 Apple。他们告诉我,这个错误是重复的,另一个错误仍然存​​在。一段时间后它关闭了,但在最后一次 XCode 更新后它仍然可以重现

更新 2:在真实的 iPad 3 上进行了检查。工作正常。

最佳答案

确实如此!使用您的代码,如果 circleLayersize 为 512 或以上,则圆不会显示在模拟器的视网膜 iPad 上...

现在,鉴于我希望今晚能够安然休眠,这里有一个使用 CALayer 的 cornerRadius 属性来解决问题的解决方法:

-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated]; //always call super

CGFloat size = MIN(self.view.frame.size.width, self.view.frame.size.height);
NSLog(@"size: %f", size);

CALayer *circleLayer = [CALayer layer];
[circleLayer setBackgroundColor:[UIColor redColor].CGColor];
circleLayer.frame = CGRectMake((self.view.frame.size.width - size) / 2.0 ,(self.view.frame.size.height - size) / 2.0, size, size);

circleLayer.cornerRadius = size/2;

[self.view.layer addSublayer:circleLayer];
}

这也会在 iPad 视网膜模拟器中显示相同的圆圈。

关于ios - CAShapeLayer 未在 iPad 视网膜模式下的模拟器中绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10834900/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com