En un CAShapeLayer
, he dibujado un UIBezierPath
cerrado. Puedo llenar esta forma estableciendo el fillColor
; sin embargo, deseo completar la forma con un degradado. ¿Cómo puedo configurar el CAGradientLayer
para que se ajuste a la forma delineada por la ruta bezier?Rellenar un trazado con un degradado en iOS
8
A
Respuesta
5
Lo que quiere es una máscara. CAGradientlayer tiene un método -setMask que se tiene que ajustarlo a los límites de su forma, así:
[gradientLayer setMask:shapeLayer];
19
un proyecto de ejemplo sería el siguiente:
...
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = UIGraphicsGetCurrentContext();
UIColor *gradientColor = [UIColor colorWithRed:0.51 green:0.0 blue:0.49 alpha:1.0];
NSArray *gradientColors = [NSArray arrayWithObjects:
(id)[UIColor blueColor].CGColor,
(id)gradientColor.CGColor,
(id)[UIColor redColor].CGColor, nil];
CGFloat gradientLocations[] = {0, 0.5, 1};
CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (CFArrayRef)gradientColors, gradientLocations);
UIBezierPath *roundedRectanglePath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(10, 10, 200, 200) cornerRadius:6];
CGContextSaveGState(context);
[roundedRectanglePath fill];
[roundedRectanglePath addClip];
CGContextDrawLinearGradient(context, gradient, CGPointMake(10, 10), CGPointMake(210, 10), 0);
CGColorSpaceRelease(colorSpace);
CGGradientRelease(gradient);
...
Cuestiones relacionadas
- 1. Rellenar una forma con un degradado en CGContext
- 2. Aplicar un degradado a CAShapeLayer
- 3. ¿Cómo crear un UIButton con un degradado negro para iPhone?
- 4. cómo rellenar degradado para roundrect en gdi puro (no gdi +)
- 5. En OSX, ¿cómo llento un degradado un trazo de ruta?
- 6. ¿Cómo llenar un camino en Android con un degradado lineal?
- 7. Cómo crear un objeto degradado con Raphael
- 8. Rellenar un DataGridView con Text y ProgressBars
- 9. Rellenar un hashmap con valores predefinidos (java)
- 10. Rellenar una ventana ncurses con un color
- 11. ¿Cómo hacer un degradado transparente?
- 12. Crear un degradado radial programáticamente
- 13. Texto con degradado en Android
- 14. Crear un degradado lineal en matriz 2D
- 15. En iOS, ¿cómo puede rellenar programáticamente un campo de formulario en PDF?
- 16. Rellenar un ListView w/AsyncTask
- 17. mejor biblioteca de trazado para iOS sdk
- 18. Cómo dividir un trazado correctamente en PHP
- 19. ¿Cómo superponer un trazado de pcolor con un trazado de contorno que utiliza un mapa de color diferente?
- 20. Rellenar un desplegable de ViewData
- 21. Mangosta: rellenar un campo rellenado
- 22. Rellenar widgets desde un cursor en onLoadFinished()
- 23. ¿Cómo hacer un degradado cónico en iOS usando Core Graphics/Quartz 2D?
- 24. Java: rellenar un rectángulo en una cuadrícula
- 25. Trazado durante un ciclo en RStudio
- 26. Dibujando una línea con un degradado de color
- 27. trazado en 3D con python
- 28. Cómo hacer un doble degradado con XML (como el iphone)
- 29. GWT: Cómo aplicar un degradado CSS3
- 30. ¿Cómo calculo un degradado de cuatro colores?
Esto es bueno, pero también debe suelta el degradado y el espacio de color. – Sulthan
gracias, me olvidé de ponerlas – WhiteTiger
ya que el post original contó con una máscara, que también añade la siguiente: 'CGContextAddPath (contexto, roundedRectanglePath.CGPath);' ' CGContextClip (contexto);' ' antes CGContextDrawLinearGradient' – maggix