2012-09-12 14 views
6

Estoy tratando de cambiar el color de sombra UIPageViewController mientras hago una animación flip. Pero siempre muestra solo el color blanco. Cómo cambiar un color del color de fondo del lado del revés a otro color como (negro o sephia). iBook está haciendo lo mismo.Cómo cambiar el fondo blanco de la sombra a otros colores

Menciono que la imagen de abajo tiene un color blanco bg que cambiaría de color.

Captura de pantalla: enter image description here

+0

Por favor, encontrar el apego de mi captura de pantalla http://www.imageurlhost.com/images/xo7tttfxq3s6fdhk60s.png – Nishu

+0

echa un vistazo a esto: http://stackoverflow.com/questions/1079011/iphone-flipping-views-shows-a-white-background –

+0

@Ganee Espero que hayas visto la imagen adjunta. http://www.imageurlhost.com/images/xo7tttfxq3s6fdhk60s.png Estoy usando UIPageViewController por lo que la animación ya está allí. Necesito modificar el color de fondo como menciono en mi imagen. – Nishu

Respuesta

0
- (void) renderPageAtIndex:(NSUInteger)index inContext:(CGContextRef)ctx { 
UIImage *image = [images objectAtIndex:index]; 
CGRect imageRect = CGRectMake(0, 0, image.size.width, image.size.height); 
CGAffineTransform transform = aspectFit(imageRect, 
              CGContextGetClipBoundingBox(ctx)); 
CGContextConcatCTM(ctx, transform); 
CGContextDrawImage(ctx, imageRect, [image CGImage]); 
} 
+0

¿Qué va a hacer aspectFit (imageRect, CGContextGetClipBoundingBox (CTX)) ; método – Nishu

-2

En el caso de la visibilidad PageControl página seleccionable Color--

UIPageControl no soporta esto por defecto. Debe crear su propio control de página y hacer el dibujo usted mismo.

+0

Estoy usando UIPageViewController no UIPageControl. UIPageViewController Estoy desarrollando una aplicación como iBook, mientras que la animación de curl de página detrás de la sombra blanca está allí de forma predeterminada. Necesito cambiar ese color bg. – Nishu

+0

Enlace de imagen de muestra. Al hacer la curvatura de la página que el bg blanco está allí, mi aplicación admite el modo nocturno, así que necesito cambiar el color negro. http://www.techotopia.com/index.php/Image:Iphone_ios_5_uipageviewcontroller_app.jpg – Nishu

+0

http://www.imageurlhost.com/images/xo7tttfxq3s6fdhk60s.png – Nishu

7

He estado tratando de hacer lo mismo desde hace un tiempo y finalmente lo descubrí. Resulta que no puede establecer el color de fondo en otros colores, pero puede proporcionar otra vista que UIPageViewController agregará a la parte posterior. Y ese es el secreto aquí.

De la documentación de Apple:

Spine location        Double sided    What to pass 
UIPageViewControllerSpineLocationMid    YES    Left and Right Page. 
SpineLocationMin or SpineLocationMax    YES    Front and Back of the page. 
SpineLocationMin or SpineLocationMax    NO    Front page only. 

Así que, básicamente, tiene que establecer la propiedad de doble cara para sí y proporcionar dos viewControllers en ambos métodos Fuente de datos:

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController; 
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController; 

Cada método será llamado dos veces por cada página nueva que agregue. Por lo tanto, debe proporcionar el viewController que normalmente devolvería y también un nuevo viewController que se agregará a la parte posterior cuando se realice la animación de conversión de página.

Depende de usted lo que su "BackViewController" tendrá. Simplemente puede tener una vista en negro o, si lo desea, puede tomar una captura de pantalla de la página principal y obtener una imagen reflejada de ella.

No es difícil una vez que entiendes cómo funciona. El único problema que puedo ver aquí es que cuando agrega una vista negra o cualquier cosa que tenga un fondo negro, la sombra al girar la página se vuelve BLANCA. No tengo idea de por qué, pero he visto esto sucediendo en muchas aplicaciones diferentes, así que supongo que para Apple este es el comportamiento normal. Pero parece realmente extraño.

EDIT:

He añadido un código de ejemplo lo que es más fácil de entender. https://github.com/mattabras/DoubleSidedPageViewController

Abras

+0

¿Podría publicar algún código? Obtengo la teoría, pero no puedo ver cómo funciona en la práctica. Solo tengo una 'página' - una página de doble cara ... – daidai

+0

@ Abras- ¿Te sería posible elaborar o quizás publicar un ejemplo, por favor? Intenté implementar lo que dijiste sin éxito. Gracias. – johnnelm9r

+1

Puede obtener un código de muestra aquí. https://github.com/mattabras/DoubleSidedPageViewController – Abras

Cuestiones relacionadas