2012-04-30 26 views
8

Me disculpo por un gran conjunto de preguntas aquí. Estoy empezando a jugar con Quartz Graphics cada vez más, y descubrí que tiene efectos interesantes, pero no tengo muchas muestras para verlos en acción.iPhone iOS cómo crear efectos gráficos como sombra paralela, etc. ¿Qué efectos están incorporados en iOS?

view.layer.shadowPath = [UIBezierPath bezierPathWithRect:view.bounds].CGPath; 

Hay una propiedad de sombra:

view.layer.shadowColor = [UIColor grayColor].CGColor; 
view.layer.shadowOffset = CGSizeMake(5, 5); 
view.layer.shadowPath = [UIBezierPath bezierPathWithRect:view.bounds].CGPath; 
view.layer.shadowRadius = 9; 

he podido hacer el espectáculo sombra sin embargo.

fronteras:

view.layer.borderWidth = 1; 
    view.layer.borderColor=[[UIColor whiteColor] CGColor]; 

¿Qué otros efectos puedo obtener de una función de iOS en el iPhone? * ¿Existe un proyecto de demostración integral que pueda mostrar qué tipo de funcionalidad de manipulación de gráficos está integrada en iOS? *

¿Cómo hago el enmascaramiento de transparencia?

¿Hay alguna manera de agregar sombra interna o brillo interior? ¿Hay alguna manera de hacer que un botón de iOS parezca más "cóncavo" de lo que realmente es?

¿Hay alguna manera de hacer degradados radiales? ¿Hay alguna manera de crear efectos de destello de lente de múltiples rayos como Adobe Illustrator? ¿Hay alguna forma de combinar capas utilizando "aligerar, disolver" u otros efectos de Photoshop? ¿Hay alguna manera de ajustar dinámicamente el brillo de la imagen? Sé cómo hacer el cambio de matiz.

Agradecería cualquier otros consejos sobre qué tipo de efectos de capa que se puede aplicar a los CALayers

+3

Voy a responder a su primera pregunta: Debe configurar view.layer.maskToBounds = NO; para mostrar la sombra – Lefteris

+0

Gracias! Estoy usando máscaras al límite para mostrar las esquinas redondeadas. Esto me hace creer que las esquinas redondeadas y la sombra no son compatibles, a menos que cree mi vista desde dos vistas y de alguna manera manipule las rutas. –

Respuesta

12

¡Qué casualidad tan interesante! Recientemente realicé una presentación en un iOS Game Design Seminar en CoreGraphics y CoreAnimation y hoy mismo he publicado algunos de los documentos en Github.

Por lo tanto, si lo prefiere algunas manos en los ejemplos se puede descargar el repositorio aquí: https://github.com/pkluz/PKCoreTechniques

incluye algunos de los siguientes ejemplos:

  • Relleno de color

  • relleno degradado (lineal y Radial)

  • Senderos sencillos

  • Curvas
  • Bezier

  • recorte (estándar y de par-impar)

  • Creación de botones personalizados tirados

  • simples Traducciones

  • Traducciones con disparadores Hit-Test

  • Un 'CoverFlow' muy primitivo con transformaciones 3D en CoreAnimation .

.. y algo más ;-)

Esperamos que encuentre lo que necesita, pero por lo que veo debe cubrir una buena cantidad de lo que se ha solicitado.

Nota: También hay un PDF que sirve como tutorial interactivo.

+0

Esto está más allá de genial. Este es simplemente un ejemplo impresionante ! Veo que las rutas de los pájaros enojados están codificadas. ¿Las ingresaste o usó algún tipo de herramienta de generación de código? ¿Sabes si es posible obtener puntos para esta ruta de un editor de gráficos, como adobe illustrator? –

2

Este es un muy buen tutorial, que me ha ayudado mucho, tal vez él le ayudará también.

+0

Gracias por un gran ejemplo de sombra, ¡esto es todo lo que he estado buscando! –

+1

@Templar, su enlace dado está fuera de fecha ahora. – Tirth

+0

@iAmbitious Sí, parece que la página ya no está disponible. [Este] (http://d3signerd.com/old/deep-dive-into-calayer-shadows/) es una versión similar a un caché, pero faltan las imágenes :( – Templar

1

Aquí está mi implementación de una generación de gradiente radial usando CIImage. Muestra la imagen nombrada si no se creó un degradado. De lo contrario, muestra un degradado radial.

+(UIImage*)doRadialGradientFilter:(NSString*)baseImageName 
{ 

    CIFilter* controlsFilter = [CIFilter filterWithName: @"CIRadialGradient" keysAndValues: 
        @"inputColor1", [CIColor colorWithRed:0.0 green:0.0 
                blue:0.0 alpha:0.0], @"inputColor0", [CIColor colorWithRed:0.0 green:0.0 
                              blue:0.5 alpha:0.5], @"inputRadius0", [NSNumber numberWithDouble:0.0], nil]; 


    CIImage *displayImage = controlsFilter.outputImage; 
    UIImage *finalImage = [UIImage imageWithCIImage:displayImage]; 

    CIContext *context = [CIContext contextWithOptions:nil]; 
    if (displayImage == nil || finalImage == nil) { 
     // We did not get output image. Let's display the original image itself. 
     return [UIImage imageNamed:baseImageName]; 
    }else { 
     // We got output image. Display it. 
     return [UIImage imageWithCGImage:[context createCGImage:displayImage fromRect:displayImage.extent]]; 
    } 

} 
Cuestiones relacionadas