在iPad视网膜模式下,CAShapeLayer不会在模拟器中绘制

时间:2012-05-31 13:44:34

标签: ios ios5 ios-simulator retina-display cashapelayer

我有一小段代码,它画了一个圆圈作为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的错误。他们告诉我,这个bug是重复的,另一个bug仍然是开放的。一段时间后它关闭了,但在最后一次XCode更新之后它仍然是可重现的

更新2:在真正的iPad上检查它3.正常工作。

1 个答案:

答案 0 :(得分:0)

事实上!使用您的代码,如果circleLayer的{​​{1}}为512或更高,该圈子将不会显示在模拟器的视网膜iPad上......

现在,鉴于我希望今晚能够和平地睡觉,这是一个使用CALayer的size属性来解决这个问题的解决方法:

cornerRadius

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