Может ли кто-нибудь помочь мне в рисовании одного определенного градиента с помощью CoreGraphics? Просто дать подсказку было бы достаточно. Пример кода, который вызывает глубочайшее уважение. мне нужна эта форма:Градиент прямоугольника CoreGraphics
Я попытался следующий код:
-(UIImage *)imageWithGradientBorder
{
CGRect rect=CGRectMake(0, 0, self.size.width, self.size.height);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
CGContextRef ctx= CGBitmapContextCreate(NULL, rect.size.width, rect.size.height, 8, rect.size.width, colorSpace, kCGImageAlphaNone);
CGGradientRef glossGradient;
size_t num_locations = 4;
CGFloat locations[4] = { 0.0, 0.1, 0.9, 1.0 };
CGFloat components[16] = { 0, 0, 0, 1, 1.0, 1.0, 1.0, 1, 1.0, 1.0, 1.0, 1, 0, 0, 0, 1};
glossGradient = CGGradientCreateWithColorComponents(colorSpace, components, locations, num_locations);
CGRect currentBounds = rect;
CGPoint topCenter = CGPointMake(CGRectGetMidX(currentBounds), 0.0f);
CGPoint midCenter = CGPointMake(CGRectGetMidX(currentBounds), CGRectGetMaxY(currentBounds));
topCenter = CGPointMake(0.0f, CGRectGetMidY(currentBounds));
midCenter = CGPointMake(CGRectGetMaxX(currentBounds), CGRectGetMidY(currentBounds));
CGContextDrawLinearGradient(ctx, glossGradient, topCenter, midCenter, 0);
CGImageRef mask = CGBitmapContextCreateImage(ctx);
CGContextRelease(ctx);
CGImageRef maskedImageRef = CGImageCreateWithMask([self CGImage], mask);
CGImageRelease(mask);
UIImage *maskedImage = [UIImage imageWithCGImage:maskedImageRef];
CGImageRelease(maskedImageRef);
return maskedImage;
}
но рисует градиент только с левой стороны.
Какой код вы пробовали до сих пор, и что же он сделал не так? – Wain
продлил вопрос – heximal
Вы пробовали вращать контекст и снова рисовать для других сторон? – sleepwalkerfx