gpt4 book ai didi

core-graphics - 在 ARC 上使用 __bridge 进行 CoreGraphics 渐变时应用程序崩溃

转载 作者:行者123 更新时间:2023-12-02 07:42:07 26 4
gpt4 key购买 nike

我正在为 iOS 5 创建一个应用程序,并且正在绘制一些渐变。以下渐变代码我在 ARC 之前一直使用,但现在当我多次使用它时它不再适用于我的设备(但是,它适用于模拟器)(所以我认为这是内存管理问题)。无论如何,这是代码:

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGFloat locations[] = { 0.0, 1.0 };

NSArray *colors = [NSArray arrayWithObjects:(__bridge id)startColor, (__bridge id)endColor, nil];

CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef) colors, locations);

CGPoint startPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect));
CGPoint endPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect));

CGContextSaveGState(context);
CGContextAddRect(context, rect);
CGContextClip(context);
CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0);
CGContextRestoreGState(context);

CGGradientRelease(gradient);

最初,没有 __bridge 语句,我按照 Xcode 的建议添加了它们。到底是什么导致了这个问题?

最佳答案

我遇到了完全相同的问题。我求助于使用 CGGradientCreateWithColorComponents 来解决我的问题。您必须将 CGColorRef 的 NSArray 转换为 CGFloat 的数组。

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGFloat locations[2] = { 0.0, 1.0 };

CGFloat components[8] = { 0.909, 0.909, 0.909, 1.0, // Start color
0.698f, 0.698f, 0.698f, 1.0 }; // End color

CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace, components,
locations, 2);

关于core-graphics - 在 ARC 上使用 __bridge 进行 CoreGraphics 渐变时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9963530/

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