ios - 为什么此绘图代码在某些运行 iOS 8.1 的 iPad 上有效,而在其他 iPad 上无效?

标签 ios objective-c ipad core-graphics

我遇到了一个奇怪的问题,我的代码可以在某些 iPad 型号上运行,但不能在其他型号上运行,即使它们运行相同版本的 iOS。这个绘制白色圆圈的简单代码适用于运行 iOS 8.1.1 的 iPad 4,但不适用于运行 8.1.1 的 iPad Mini Retina。这甚至可以在模拟器中重现。它可以在“iPad Retina 8.1”或“iPad 2 8.1”模拟器上运行,但不能在“iPad Air 8.1”上运行。当它不起作用时,它不会绘制一个白色的小圆圈。 View 是空白的。为什么会发生这种情况?

@implementation MyUIViewSubclass
{
    CAShapeLayer* animationLayer;
    CGMutablePathRef smallCircle;
}

- (id) initWithCoder:(NSCoder *)aDecoder
{
    if (self = [super initWithCoder:aDecoder])
    {
        smallCircle = CGPathCreateMutable();
        CGPathAddArc(smallCircle, NULL, self.bounds.size.width / 2, self.bounds.size.height / 2, 32, (CGFloat)M_PI, -(CGFloat)M_PI, NO);

        animationLayer = [CAShapeLayer layer];
        animationLayer.frame = CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height);
        animationLayer.lineWidth = 1;
        animationLayer.strokeColor = [[UIColor whiteColor] CGColor];
        animationLayer.fillColor = [[UIColor clearColor] CGColor];
        animationLayer.path = smallCircle;

        [self.layer addSublayer:animationLayer];
    }
    return self;
}

@end

最佳答案

我在写问题时就弄清楚了这一点。它不适用于 64 位设备。当我将 CGFloat 更改为 float 时,它起作用了。 CGFloat 在 32 位和 64 位平台上的定义不同。

关于ios - 为什么此绘图代码在某些运行 iOS 8.1 的 iPad 上有效,而在其他 iPad 上无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27285135/

相关文章:

iphone - 如何禁用 UITextField 中的字母字符?

iPad:服务器需要客户端证书

ios - 在 uibutton 内旋转 png

ios - 用于 Xcode 7 之前项目的 Xcode 7 UI 测试用例

ios - ParseClientConfiguration - 未解析的 ios sdk v1.12.0

objective-c - 如何获取 "\n"字符后的值?

ios - 保存登录 session 凭据并在整个应用程序中加载

objective-c - NSUUID 可以通过继承来扩展吗?如何?

ios - 为什么系统 UIButton 在靠近导航 Controller 空间时不设置动画(左)

iphone - 为 iPhone/iPad 编写单元测试的最佳方法是什么?