2012-09-12 18 views
6

Sto provando a cambiare il colore dell'ombra UIPageViewController mentre eseguo un'animazione flip. Ma mostra sempre solo il colore bianco. Come cambiare un colore del bianco di sfondo del lato di vibrazione in un altro colore come (nero o sephia). iBook sta facendo la stessa cosa.Come cambiare lo sfondo dell'ombra bianco in altri colori

Ho detto che l'immagine qui sotto ha bianco bg che colore vorrei cambiare.

Screenshot: enter image description here

+0

Si prega di trovare l'allegato del mio schermo girato http://www.imageurlhost.com/images/xo7tttfxq3s6fdhk60s.png – Nishu

+0

controllare questo: http://stackoverflow.com/questions/1079011/iphone-flipping-views-shows-a-white-background –

+0

@Ganee spero che tu abbia visto l'immagine allegata. http://www.imageurlhost.com/images/xo7tttfxq3s6fdhk60s.png Sto usando UIPageViewController in modo che l'animazione sia già lì. Ho bisogno di modificare il colore posteriore come menzionato nella mia immagine. – Nishu

risposta

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

Cosa farà aspectFit (imageRect, CGContextGetClipBoundingBox (CTX)) ; metodo – Nishu

-2

Nel caso di PageControl visibilità pagina selezionabile Colore--

UIPageControl non supporta questo per impostazione predefinita. Devi creare il tuo controllo della pagina e fare il disegno da solo.

+0

Sto usando UIPageViewController non UIPageControl. UIPageViewController Sto sviluppando un'applicazione come iBook, mentre l'animazione di arricciatura pagina dietro l'ombra bianca è presente per impostazione predefinita. Devo cambiare quel colore di bg. – Nishu

+0

Collegamento dell'immagine di esempio. mentre faccio la pagina arricciata che bg bianco è lì la mia applicazione supporta la modalità notte, quindi ho bisogno di cambiare il colore nero. http://www.techotopia.com/index.php/Image:Iphone_ios_5_uipageviewcontroller_app.jpg – Nishu

+0

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

7

Ho cercato di fare la stessa cosa da un po 'di tempo e finalmente l'ho capito. Risulta che non è possibile impostare il colore di sfondo su altri colori, ma è possibile fornire un'altra vista che UIPageViewController aggiungerà alla parte posteriore. E questo è il segreto qui.

Dalla documentazione di 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. 

Quindi, in sostanza, è necessario impostare doppia proprietà lati di sì e fornire due viewControllers su entrambi i metodi Fonte dati:

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

Ogni metodo sarà chiamato due volte per ogni nuova pagina che aggiungi. Pertanto, è necessario fornire al viewController che si restituirà normalmente e anche una nuova viewController che verrà aggiunta sul retro quando si esegue l'animazione di rotazione della pagina.

Spetta a te ciò che il tuo "BackViewController" avrà. Puoi semplicemente avere una vista nera o se vuoi, puoi fare uno screenshot della prima pagina e ottenere un'immagine speculare da essa.

Non è difficile una volta capito come funziona. L'unico problema che posso vedere qui è che quando aggiungi una vista nera o qualcosa che ha uno sfondo nero, l'ombra quando si gira la pagina diventa BIANCA. Non ho idea del perché, ma ho visto accadere questo su molte app diverse, quindi credo che per Apple questo sia il comportamento normale. Ma sembra davvero strano.

EDIT:

Ho aggiunto un codice di esempio così è più facile da capire. https://github.com/mattabras/DoubleSidedPageViewController

Abras

+0

Potresti postare qualche codice - ottengo la teoria, ma non vedo come funziona nella pratica. Ho solo una "pagina" - una doppia faccia ... – daidai

+0

@ Abras- Potrebbe essere possibile elaborare o pubblicare un esempio per favore? Ho cercato di implementare ciò che hai detto senza successo. Grazie. – johnnelm9r

+1

Qui puoi ottenere un codice di esempio. https://github.com/mattabras/DoubleSidedPageViewController – Abras

Problemi correlati