UISegmentedButton définissant la couleur de la teinte en utilisant un motif

J'ai donc le code suivant:

  UISegmentedControl * segmentedCtrl = [[UISegmentedControl alloc] initWithFrame:CGRectMake(0, 0, 150, 35)];
    [segmentedCtrl setTintColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"duck.png"]]];


 [segmentedCtrl setSegmentedControlStyle:UISegmentedControlStyleBar];

Et voici l'image de canard que j'essaie d'utiliser:

enter image description here

Quelqu'un veut-il me dire pourquoi ça ne marche pas? J'ai essayé avec n'importe quel type d'image et ça ne marche pas. FYI Je ne cherche pas à avoir un fond de canard dans mon contrôle segmenté. Ceci est juste pour illustrer le fait que setTint utilisant le colorWithPatternImage ne fonctionne pas pour n'importe quel type d'image.

0
oui j'ai essayé ça
ajouté l'auteur adit, source
couleur claire .. transparent
ajouté l'auteur adit, source
self.view fonctionne .. mais pas sur segmentedController tintColor
ajouté l'auteur adit, source
Avez-vous essayé d'utiliser cette couleur comme couleur d'arrière-plan d'une vue plus grande juste pour vous assurer que le problème réside vraiment dans la partie colorWithPatternImage: ?
ajouté l'auteur Rok Jarc, source
Quels ont été les résultats?
ajouté l'auteur Rok Jarc, source
Ok, j'ai téléchargé votre image. Le téléchargement était de type .jpeg (XXWNo.jpg). Créé une seule application de vue et dans viewDidLoad set viewControllers voir la couleur de fond avec: [self.view setBackgroundColor: [UIColor colorWithPatternImage: [UIImage imageNamed: @ "XXWNo.jpg"]]]; le résultat était aussi attendait une image de canard à l'écran. Votre image est vraiment png (et firefox la convertit en jpeg lors du téléchargement) ou devriez-vous la charger en tant qu'image jpg?
ajouté l'auteur Rok Jarc, source

5 Réponses

Prenez d'abord la valeur RVB de la couleur en ouvrant votre image dans Photochop, puis utilisez ces valeurs.

segment-control-background-color

0
ajouté
Comment cela pourrait-il l'aider à utiliser un motif (image) pour la couleur de fond?
ajouté l'auteur Rok Jarc, source

avez-vous essayé une image de largeur 1px? L'image que vous utilisez est trop grande pour la création de motifs

0
ajouté
oui je l'ai fait .. n'a pas fonctionné aussi bien
ajouté l'auteur adit, source

UISegmentedControl (as all other UIKit controls, I think) doesn't support pattern colors as tint colors. The tint color is basically used to create a glossy gradient and that would have to be done very differently with an arbitrary pattern.

Pour personnaliser l'apparence de l'arrière-plan, utilisez setBackgroundImage: forState: barMetrics: et setDividerImage: forLeftSegmentState: rightSegmentState: barMetrics: à la place (avec des images appropriées bien sûr, les motifs ne sont pas un bon ajustement pour ceux-ci).

0
ajouté

Le paramètre tintColor sur UISegmentedControl sert uniquement de base pour calculer le gradient utilisé dans le contrôle. Vous ne pouvez pas très bien avoir une image en dégradé, donc c'est juste en utilisant une partie de celle-ci. Il semble que ce dont vous avez besoin est une sous-classe personnalisée de UISegmentedControl.

0
ajouté
    UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:nil];
    [segmentedControl insertSegmentWithImage:[UIImage imageNamed:@"up_button.png"] atIndex:0 animated:YES];
    [segmentedControl insertSegmentWithImage:[UIImage imageNamed:@"down_button.png"] atIndex:1 animated:YES];
0
ajouté