Comment obtenir la couleur d'un pixel dans une UIView?
Je suis en train de développer une petite application. Pour cela, j'ai besoin de détecter la couleur d'un pixel dans une UIView. J'ai un CGPoint la définition du pixel dont j'ai besoin. Les couleurs de la UIView sont modifiées à l'aide CoreAnimation.
Je sais qu'il ya certaines façons complexes pour extraire les informations de couleur d'UIImages. Cependant, je ne pouvais pas trouver un solution pour UIViews.
En Pseudo-Code, je suis à la recherche de quelque chose comme
pixel = [view getPixelAtPoint:myPoint];
UIColor *mycolor = [pixel getColor];
Une entrée très appréciée.
- Avez-vous trouvé un (rapide) de la solution?
- À l'aide de l'image bitmap contexte s'est avéré être assez rapide pour mes fins. Donnez-lui un essai et voir comment cela fonctionne pour vous.
Vous devez vous connecter pour publier un commentaire.
C'est assez horrible et lent. Fondamentalement, vous créer une image bitmap d'un contexte avec un magasin de sauvegarde que vous allouez vous permet de lire la mémoire, puis vous rendre le point de vue de la couche dans le contexte et de lire le point de ram.
Si vous savez comment le faire pour une image déjà vous pouvez faire quelque chose comme ceci:
Et alors vous obtiendrez une image où vous pouvez obtenir les données de pixel. Je suis sûr que le mécanisme que vous avez pour gérer les images implique rendre dans un contexte de toute façon, de sorte que vous pouvez le fusionner avec le présent et le facteur de la création de l'image. Donc, si vous prenez pourrait et supprimer les bits lorsque vous chargez l'image et le remplacer par le contexte de rendu:
vous devriez être bon.
Ici est une solution plus efficace:
Lien vers des fichiers: https://github.com/ivanzoid/ikit/tree/master/UIView+ColorOfPoint
#import <QuartzCore/QuartzCore.h>
(CGBitmapInfo)kCGImageAlphaPremultipliedFirst
pour supprimer la compilation d'avertissementUne swift'ified version de ivanzoid's réponse
Swift 3
Swift 2
autour de la sous-jacentes
CALayer
mais facilement traduisible retour àUIView
.Correction de quelques erreurs mineures
Également, ajouter
à votre dossier pour éviter les messages d'avertissement.
La combinaison de votre code avec le code trouvé ici fonctionne parfaitement.
UIGraphicsGetImageFromCurrentImageContext()
?Swift 4 & 4.2. Testé avec XCode 10, iOS 12, Simulateur & iPhone 6+ iOS 12.1.
Ce code fonctionne très bien.