[SWIFT] [IOS] Que faire lorsque l'image est remplie d'une seule couleur

Il y a des moments où vous souhaitez mettre votre image d'origine dans la barre de navigation et la rendre un peu plus riche, non? À ce moment-là, si vous essayez de le faire de la manière habituelle, il sera affiché en bleu uni.

·idéal

·réalité

Je voudrais garder un mémorandum de ce que je peux faire pour éviter cela.

La manière habituelle

Essayez d'abord comme d'habitude. Est-ce comme ça quand il est écrit dans le code?

    override func viewDidLoad() {
        super.viewDidLoad()
        
        setupNavigationBar()
    }

    private func setupNavigationBar() {
        navigationItem.title = "Page d'accueil"
        
        let button = UIButton(type: .system)
        button.setImage(UIImage(named: "button_refresh"), for: .normal)
        button.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
        
        let rightItem = UIBarButtonItem(customView: button)
        navigationItem.rightBarButtonItem = rightItem
    }
    
    @objc private func buttonAction() {
        print("La couleur du bouton est étrange! !! !!")
    }

En fait, il est plus rapide de l'ajouter dans Storyboard, mais comme il s'agit d'un groupe qui écrit en code, je le fais généralement (volonté d'Iron).

Si vous l'écrivez comme ça pour le moment, l'icône du bouton sera remplie de bleu, ce qui vous rend triste.

Remède 1 (lors de l'écriture dans le code)

Lors de l'écriture de code, il est juste de réécrire l'endroit où setImage est défini sur bouton. Plus précisément, cela ressemble à ceci.

button.setImage(UIImage(named: "button_refresh")?.withRenderingMode(.alwaysOriginal), for: .normal)

UIImage a un mode de rendu,

automatic Défaut. Il sélectionnera le mode lorsque vous utilisez l'image
alwaysOriginal Toujours afficher l'image d'origine
alwaysTemplate Cela dépend de la couleur de teinte du bouton, etc.

Vous pouvez en spécifier trois. Cette fois, j'ai spécifié «toujours Original» parce que je veux que la barre de navigation affiche l'image d'origine. Au contraire, si vous voulez faire correspondre avec tintColor, vous pouvez spécifier ʻalwaysTemplate`.

Solution de contournement 2 (lors de la spécification directe dans Assets.xcassets)

Cependant, pour ceux d'entre vous qui trouvent compliqué d'écrire du code, il existe un moyen direct de le faire dans Assets.xcassets. Tout d'abord, ouvrez Assets.xcassets, sélectionnez l'image souhaitée, puis

Regardez le deuxième «Renser As» du haut des éléments de l'ensemble d'images sur la droite. Si rien n'est spécifié, il doit s'agir de «Default».

Vous connaissez déjà le reste. Si vous changez la valeur de Renser As en ʻOriginal Image, il deviendra automatiquement ʻalways Original sans utiliser with Rendering Mode dans votre code.

Sommaire

C'est pourquoi c'était la méthode de réglage du mode de rendu de UIImage. Même s'il s'agit d'une fonction que vous utilisez de manière inattendue, vous ne pourrez peut-être pas vous en souvenir par accident (4 pertes), alors soyez prudent.

Recommended Posts

[IOS] Que faire lorsque l'image est remplie d'une seule couleur
[Rails] Que faire lorsque la vue se réduit lorsqu'un message est affiché avec la méthode des erreurs
Que faire si l'image d'arrière-plan n'est pas appliquée après le déploiement
Remarques sur ce qu'il faut faire lorsque EC2 est configuré avec t2.micro
Que faire si l'application n'est pas créée avec la dernière version de Rails installée lorsque les rails sont neufs
Que faire quand est invalide car il ne commence pas par un "-"
Que faire lorsque le certificat SSL a expiré
ParseException: que faire lorsqu'une date impossible à analyser est atteinte
[Rails] Que faire lorsque l'image Refile n'est pas affichée lors de l'écriture du traitement au moment de l'erreur de routage
Après avoir installé le gemfile'devise''bootstrap 'avec des rails, que faire lorsque l'url est une erreur
Que faire lorsque «Échec du chargement de la bibliothèque partagée JNI» s'affiche dans Eclipse
[Joke] Que faire lorsque la fréquence d'échantillonnage non valide est atteinte lors de l'utilisation de Mixxx sur Ubuntu 20.04
Que faire lorsqu'une exception javax.batch.operations.JobStartException se produit
[Ubuntu 20.04] Que faire si le moniteur externe n'est pas reconnu
Lorsque l'accès demandé à la ressource est refusé lors de la transmission avec Docker
Que faire lorsque la validation ne fonctionne pas avec l'action de mise à jour
Que faire lorsque les modifications du servlet ne sont pas reflétées
Que faire lorsque Cloud 9 est plein dans le didacticiel Rails
Remarques sur la marche à suivre si le Jar de dépendance Eclipse Maven est incorrect
Que faire lorsque Gradle dit "Pour plus d'informations, veuillez recompiler avec l'option -Xlint: décochée"
Que faire lorsque vous souhaitez connaître la position source où la méthode est définie dans binding.pry
Que faire lorsque Maven dit "Pour plus d'informations, veuillez recompiler avec l'option -Xlint: décochée"
Que faire lorsque javax.el.ELException: Pas une expression de méthode valide: s'affiche lorsque l'écran JSF est affiché
Que faire lorsqu'une exception javax.el.PropertyNotWritableException se produit
Que faire lorsque la méthode non définie ʻuser_signed_in? '
Que faire lorsque le préfixe c n'est pas lié dans JSP
Que faire lorsque CentOS ne peut pas être démarré avec VirtualBox sur Catalina
Que faire lorsque "npm ERR! Code ENOSELF" s'affiche après l'installation de npm
Que faire si le processus Tomcat reste lorsque vous arrêtez Tomcat dans Eclipse
Que faire si l'application dont le nom est appName est déjà enregistrée. Lorsque vous essayez de démarrer GlassFish
Que faire si vous mourez avec zip si vous avez pom lors de la création d'un fichier exécutable avec gradle
Que faire si l'opération non autorisée s'affiche lors de l'exécution d'une commande dans le terminal
Que faire lorsque la valeur devient nulle dans le second getSubmittedValue () dans JSF Validator
Que faire si le serveur Tomcat meurt
Que faire si le message "Un serveur est déjà en cours d'exécution" s'affiche. Erreur lors de la tentative de démarrage du serveur rails
[Grails] Une erreur s'est produite lors de l'exécution Que faire lorsque la CLI Grails ne démarre pas
Androd: Que faire à propos de "Le Royaume est déjà dans une transaction d'écriture dans"
Que faire lors du débogage "Source non trouvée"
Qu'utilisez-vous lors de la conversion en String?
Que faire si IllegalStateException se produit dans PlayFramework
WELD-001408: Que faire lorsque les dépendances non satisfaites pour le type Bean avec des qualificatifs @Default
Que faire si vous frappez le mur de trop de fichiers de symboles lors du téléchargement avec App Store Connect
Que faire lorsque «Impossible de trouver» dans l’une des sources apparaît dans l’environnement de développement avec Docker × Rails × RSpec
[React.useRef] Que faire lorsque le dernier état ne peut pas être référencé dans l'écouteur d'événements
Que faire quand rbenv dit qu'il n'y a pas d'historique readline ou lib
Que faire en cas d'échec de la construction par rbenv install / pyenv install avec anyenv (système Debian)
Mémo à faire pour le moment lors de la construction de la série CentOS 6 avec VirtualBox
Que faire lorsque l'adresse déjà utilisée est affichée après l'exécution des rails
Que faire lorsque les paramètres de routage ne fonctionnent pas après la création d'un environnement Docker avec Laravel
Que faire si l'annotation JSON Hint ne fonctionne pas avec Lombok et JSONIC
Que faire si le point d'arrêt est grisé et ne s'arrête pas pendant le débogage
[DDD] Quelle est l'architecture la plus accessible pour démarrer avec la conception pilotée par domaine?
Un avertissement s'affiche lorsque vous essayez d'utiliser un entier énorme avec les variables spéciales $ 1, $ 2, $ 3 ...