Est-ce que quelqu'un connaît des contrôles qui reproduiront les vues floues de style iOS7.
Je suppose qu'il peut y avoir une sorte de sous-classe UIView qui reproduira le comportement.
Je parle de ces vues de type qui brouillent l'arrière-plan de manière extrêmement épaisse afin qu'elles aient des effets d'attraction de la vue d'arrière-plan.
Réponses:
Vous pourrez peut-être modifier quelque chose comme RWBlurPopover de Bin Zhang pour ce faire. Ce composant utilise mon GPUImage pour appliquer un flou gaussien aux composants en dessous, mais vous pouvez tout aussi facilement utiliser un CIGaussianBlur pour le même. GPUImage pourrait cependant être un poil plus rapide .
Cependant, ce composant dépend de votre capacité à capturer la vue derrière celle que vous présentez et peut avoir des problèmes avec les vues qui s'animent derrière ce contenu. La nécessité de parcourir Core Graphics pour pixelliser la vue d'arrière-plan ralentira les choses, nous n'avons donc probablement pas un accès suffisamment direct pour pouvoir le faire de manière performante pour les superpositions sur des vues animées.
En tant que mise à jour de ce qui précède, j'ai récemment retravaillé les flous dans GPUImage pour prendre en charge des rayons variables, permettant la réplication complète de la taille du flou dans la vue du centre de contrôle d'iOS 7. À partir de là, j'ai créé la classe GPUImageiOS7BlurFilter qui encapsule la taille de flou et la correction des couleurs appropriées qu'Apple semble utiliser ici. Voici comment le flou de GPUImage (à droite) se compare au flou intégré (à gauche):
J'utilise un sous-échantillonnage / suréchantillonnage 4X pour réduire le nombre de pixels sur lesquels le flou gaussien doit fonctionner, de sorte qu'un iPhone 4S peut brouiller tout l'écran en environ 30 ms en utilisant cette opération.
Vous avez toujours le défi de savoir comment tirer du contenu dans ce flou à partir des vues derrière celui-ci de manière performante.
la source
J'utilise
FXBlurView
ce qui fonctionne très bien sur iOS5 +https://github.com/nicklockwood/FXBlurView
CocoaPods:
Je l'ai ajouté en utilisant:
la source
FXBlurView
le dessusUIScrollView
sur un, j'obtiens également un résultat décalé. Je pense que cela a à voir avec la façon dont le flou est ajouté. Apple, si je ne me trompe pas, accède directement au GPU en utilisant son propre flou, ce que nous ne pouvons pas faire en tant que développeurs. Par conséquent, la solution @cprcrack est en fait la meilleure solution ici.AVERTISSEMENT: quelqu'un dans les commentaires a déclaré qu'Apple rejette les applications utilisant cette technique. Cela ne m'est pas arrivé, mais juste pour votre considération.
Cela peut vous surprendre, mais vous pouvez utiliser une UIToolbar , qui inclut déjà cet effet standard (uniquement iOS 7+). Dans vous affichez le viewDidLoad du contrôleur:
la source
viewDidLoad
comme ça. - (void) viewDidLoad {[super viewDidLoad]; self.view = [[UIToolbar alloc] initWithFrame: CGRectZero]; } Dans mon cas, je mets en page mes vues par programmation (ancien style). Je vote pour cette solution car UIToolbar hérite de UIView donc fondamentalement, je ne vois aucun problème dans cette solution. Je testerai davantage au fur et à mesure que j'avancerai dans le développement et testerai cette solution.Depuis iOS8, vous pouvez utiliser UIBlurEffect .
Il existe de bons exemples sur iOS8Sampler avec UIBlurEffect et UIVibrancyEffect .
la source
UIVisualEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; UIVisualEffectView *blurView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
La meilleure nouvelle façon d'obtenir une superposition estompée est d'utiliser la nouvelle fonctionnalité iOS 8 UIVisualEffectView.
UIBlurEffect prend en charge trois types de style. Sombre, clair et extra-léger.
la source
Vous pouvez créer une classe avec un UIToolBar qui est une sous-classe de UIView et l'instancier dans un contrôleur de vue distinct. Cette approche démontre un UIToolBar translucide (sous-classé par UIView) qui fournit des commentaires en direct (dans ce cas pour un AVCaptureSession).
YourUIView.h
YourUIView.m
Une fois que l'UIView ci-dessus a été personnalisé, continuez et créez une classe qui est une sous-classe d'un ViewController. Ci-dessous, j'ai créé une classe qui utilise une session AVCapture. Vous devez utiliser AVCaptureSession pour remplacer la configuration de la caméra intégrée d'Apple. Ainsi, vous pouvez superposer le tranclucent UIToolBar de la classe YourUIView .
YourViewController.h
YourViewController.m
la source