I am using CIFilter to create gradients, in which I make an SKTexture
- (SKTexture*)createBorderWith:(CIColor*)left and:(CIColor*)right rotateCW:(BOOL)rotate {
CGRect borderRect = CGRectMake(0,0,500,5000);;
if (rotate) {
borderRect = CGRectMake(0,0,5000,500);
}
CIContext *coreImageContext = [CIContext contextWithOptions:nil];
CIFilter *gradientFilter = [CIFilter filterWithName:@"CILinearGradient"];
[gradientFilter setDefaults];
CIVector *startVector = [CIVector vectorWithX:0.0 Y:borderRect.size.height/2];
CIVector *endVector = [CIVector vectorWithX:borderRect.size.width Y:borderRect.size.height/2];
if (rotate) {
startVector = [CIVector vectorWithX:borderRect.size.width/2 Y:borderRect.size.height];
endVector = [CIVector vectorWithX:borderRect.size.width/2 Y:0.0];
}
[gradientFilter setValue:startVector forKey:@"inputPoint0"];
[gradientFilter setValue:endVector forKey:@"inputPoint1"];
[gradientFilter setValue:left forKey:@"inputColor0"];
[gradientFilter setValue:right forKey:@"inputColor1"];
CGImageRef cgimg = [coreImageContext createCGImage:[gradientFilter outputImage]
fromRect:borderRect];
SKTexture *texture = [SKTexture textureWithCGImage:cgimg];
return texture;
}
When I launch this on an iPhone 5s, or 6 Plus, the gradients work and show no problem.
When I launch this on an iPad 2, or the iOS Simulator, I get black squares. Weird to me.
Any notes would be helpful.