2014-06-09 18 views
16

Nella mia ViewController.swift:UIVisualEffectView rende diverso su diversi dispositivi

var img = UIImageView(image: UIImage(named: "puddles")) 

img.frame = view.bounds; 
view.addSubview(img); 


var effect = UIBlurEffect(style: UIBlurEffectStyle.Light) 
var effectView = UIVisualEffectView(effect: effect) 
effectView.frame = CGRectMake(0, 0, 500, 500) 
view.addSubview(effectView) 

L'immagine di rendering utilizzando il codice sopra nella iPad Air, iPhone 5 o iPhone 5S simulatori:

woof, doesn't that look so good

L'immagine come visualizzato utilizzando il codice sopra nei simulatori iPhone 4S, iPad 2 o iPad Retina:

I can't see my doge!

Nota: Entrambe le immagini di cui sopra sono stati presi dal simulatore, ma questo può essere riprodotto su dispositivi reali che eseguono iOS 8 Beta 1 pure.

Ovviamente, vorrei ottenere il primo effetto su tutti i dispositivi. Come posso ottenere lo stesso primo effetto su tutti i dispositivi?

+1

Stai usando Swift nel codice di esempio, ma non c'è niente sulla tua domanda che dipende da quella . Si prega di utilizzare [swift-language] solo per domande sulla lingua. – rickster

risposta

25

UIVisualEffectView in iOS 8 fa praticamente la stessa cosa degli effetti di traslucenza e di vibrazione (precedentemente API privati) visti in iOS 7. Come gli effetti di iOS 7, ricadono in implementazioni graficamente più semplici su hardware che non è in grado di eseguire il rendering effetti grafici così complessi in tempo reale.

+1

Questo è interessante, ma non sorprendente. Osservando qualcosa come Control Center puoi vedere lo stesso identico effetto che viene reso. Su dispositivi come Retina iPad, in Control Center non vi è alcuna sfocatura, proprio come nella mia domanda. Non me ne sono nemmeno accorto. Sembra che "UIVisualEffectView' sia pensato per le barre degli strumenti e simili, e che se voglio semplicemente sfocare lo sfondo probabilmente dovrei usare la sfocatura statica o qualcosa come [' FXBlurView'] (https://github.com/nicklockwood/FXBlurView) . –

+3

Ho appena trascorso 2 ore cercando di capire perché la vista stupida non mostrava sfocatura, nonostante l'avesse usata bene in un altro progetto. Si scopre che stavo usando il simulatore di iPad 2 ... che hai trovato per mostrare il bianco. Ugh, doloroso. Magari avessero una modalità statica rispetto alla modalità live invece di questa caduta ... aspetto piuttosto diverso. – MobileVet

+1

Wow, voglio 1,5 ore della mia vita indietro Apple. Loro "potrebbero" voler aggiungere (leggere: DEFINITAMENTE) questo ai documenti ... –

5

Abbiamo riscontrato questo problema di recente quando il nostro Visual Effect View era di un brutto colore grigio su una delle macchine del nostro sviluppatore.

UIVisualEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]; 
UIVisualEffectView *visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect]; 

Si scopre che avevano permesso a Low Quality Graphics Override sul loro simulatore iOS. Tornando a questa opzione, Device Default risolve il problema e visualizza una bella vista traslucida.

simulatore iOS> Barra dei menu> Debug> Qualità grafica Override> dispositivo predefinito

Low quality graphics override option in iOS Simulator

+1

Sei fantastico, mi impedisce di continuare a portarlo sul dispositivo solo per testare l'effetto sfocato. grazie uomo! –

Problemi correlati