8
votes

Comment prévenir les images audacieuses avec UiImagerinteringModeDemel

Mon application dispose d'une barre d'outils avec des boutons d'image sur eux (sous-classe d'Uibutton); Lorsque l'utilisateur passe sur l'option d'accessibilité "en caractères gras", non seulement le texte devient en gras, mais les images suivent la poursuite.

Ceci est la barre d'outils en mode normal:

 barre d'outils en mode normal

lorsque le" texte en gras "est activé:

barre d'outils en caractères gras

Il semble être causé par ma sous-classe Uibutton, qui est incluse ci-dessous. J'utilise cette classe pour appliquer une couleur de teinte d'image lorsque le bouton est cliqué, désactivé, etc. et empêche de devoir inclure plusieurs états de chaque bouton. Pour cela, j'utilise le uiimagerinteringMoDealwayPlapper qui auraient expose ce comportement observé.

J'ai essayé de décocher l'option" Accessibilité "dans le constructeur d'interface , mais cela n'avait aucun effet du tout. Existe-t-il un moyen de résoudre ce problème? xxx


2 commentaires

Pouvez-vous renvoyer @kirby TODD réponse pour appliquer une couleur de teinte au lieu de par défaut que vous utilisez avec RenderingModealwaywayPlayPlated. Stackoverflow.com/Questtions/19829356/Color-Tint-uibutton-ima ge


Quelle fonctionnalité étrange! Il suffit de courir dans ce numéro dans mon application. Est-ce documenté n'importe où !?


4 Réponses :


4
votes

Je vous recommande d'utiliser une catégorie personnalisée pour teinter vos boutons d'image. Voici une implémentation simple qui ne fait que:

uiimage + teintimage.h strong> p> xxx pré>

uiImage + Tintimage.m Strong> p> xxx pré>

pour l'utiliser, il suffit d'importer "uiimage + teintimage.h" code>, alors procédez comme suit: p>

UIImage *originalImage = [UIImage imageNamed:@"icn-menu"];
UIImage *tintedImage = [originalImage imageTintedWithColor:[UIColor blueColor]];
UIButton *homeButton = [UIButton buttonWithType:UIButtonTypeCustom];
[homeButton setImage:originalImage forState:UIControlStateNormal];
[homeButton setImage:tintedImage forState:UIControlStateHighlighted];


3 commentaires

@Jack Avez-vous eu le temps de l'essayer ou avez-vous résolu votre problème?


Merci! Cela m'a assez aidé à résoudre tout mon problème assez facilement; Le bonus est à vous :)


Quelle est la solution à Swift Plz? Mon code est: var image = uiimage (nommé: "home") comme uiimage? Image = image?



0
votes

Merci à La réponse de Rufel J'ai pu résoudre mon problème et réduire le code de ma classe en même temps: xxx


0 commentaires

0
votes

Ceci est une version Swift 3 de RUFEL Réponse,

extension UIImage {
static func imageTinted(image: UIImage?, color: UIColor) -> UIImage? {
    let rect  = CGRect(x: 0.0, y: 0.0, width: image?.size.width ?? 0.0, height: image?.size.height ?? 0.0)
    UIGraphicsBeginImageContextWithOptions(image?.size ?? CGSize.zero, false, image?.scale ?? 2.0)
    color.set()
    UIRectFill(rect)
    image?.draw(in: rect, blendMode: CGBlendMode.destinationIn, alpha: 1.0)
    let tinted = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext();
    return tinted;
}
}


0 commentaires

1
votes

SWIFT STRAND> SOLUTION:

SET Par défaut STROND> MODE DE RENDUMENT SUR L'image (dans le catalogue d'actifs ou dans le code). P>

Transformez la couleur de l'image Avec cette fonction: p> xxx pré>

Définissez l'image transformée sur le bouton Etat souhaité Fort>: P>

let redImage = image.transform(withNewColor: UIColor.red)
btn?.setImage(redImage, for: .selected)


0 commentaires