macOS 使用 CGContextRef 并始终为黑色
macOS Use CGContextRef and always black
我尝试使用 this 解决方案在 macOS.But 上通过@Johnny Rockex 构建渐变圆我遇到了一些问题。
在@Johnny Rockex 的原始回答中
//3.1 setup
UIBezierPath * bezierPath;
CGPoint center = CGPointMake(dimension/2, dimension/2);
UIGraphicsBeginImageContextWithOptions(CGSizeMake(dimension, dimension), true, 0.0);
UIRectFill(CGRectMake(0, 0, dimension, dimension));
此方法由UIKit提供,而非AppKit。所以我使用 AppKit
的一些方法
NSImage *contentView =[[NSImage alloc]initWithSize:NSMakeSize(dimension, dimension)];
[contentView lockFocus];
[NSGraphicsContext currentContext].imageInterpolation = NSImageInterpolationNone;
CGContextRef gc = [[NSGraphicsContext currentContext]CGContext];
NSRectFill(CGRectMake(0, 0, dimension, dimension));
//fill Colors in bazierPath
for (int n = 0; n<numberOfColors;n++) {
...
}
[contentView unlockFocus];
[radialGradient setImage:contentView];
不幸的是,我最后得到了一个奇怪的结果
我的颜色数组和 bazierPath 是正确的,但只有一小部分图像有颜色。
可能不是标题不尊重造成的,但我在其他部分代码中找不到任何线索。
与 UIBezierPath 不同,appendBezierPathWithArcWithCenter 以度为单位。
我尝试使用 this 解决方案在 macOS.But 上通过@Johnny Rockex 构建渐变圆我遇到了一些问题。
在@Johnny Rockex 的原始回答中
//3.1 setup
UIBezierPath * bezierPath;
CGPoint center = CGPointMake(dimension/2, dimension/2);
UIGraphicsBeginImageContextWithOptions(CGSizeMake(dimension, dimension), true, 0.0);
UIRectFill(CGRectMake(0, 0, dimension, dimension));
此方法由UIKit提供,而非AppKit。所以我使用 AppKit
的一些方法NSImage *contentView =[[NSImage alloc]initWithSize:NSMakeSize(dimension, dimension)];
[contentView lockFocus];
[NSGraphicsContext currentContext].imageInterpolation = NSImageInterpolationNone;
CGContextRef gc = [[NSGraphicsContext currentContext]CGContext];
NSRectFill(CGRectMake(0, 0, dimension, dimension));
//fill Colors in bazierPath
for (int n = 0; n<numberOfColors;n++) {
...
}
[contentView unlockFocus];
[radialGradient setImage:contentView];
不幸的是,我最后得到了一个奇怪的结果
我的颜色数组和 bazierPath 是正确的,但只有一小部分图像有颜色。 可能不是标题不尊重造成的,但我在其他部分代码中找不到任何线索。
与 UIBezierPath 不同,appendBezierPathWithArcWithCenter 以度为单位。