Question

J'ai une image au format 480x331 avec un arrière-plan transparent. La partie transparente est juste autour des bords de l'image. Mon UIButton est 72x37. Lorsque je définis l'image en tant qu'image d'arrière-plan dans IB pour le bouton, les bords transparents de l'image s'affichent en blanc dans le bouton. Sans image, le bouton est blanc avec des coins arrondis. Je devine que c'est le blanc que je vois passer. Si tel est le cas, cela signifie que la transparence de l’image fonctionne mais que la zone blanche du bouton est visible.

Si je définit l'image sur la propriété Image de UIButton, elle ne sera pas mise à l'échelle correctement, même après le changement de mode d'affichage, et restera à sa taille maximale.

Des suggestions sur la propriété à utiliser pour que la mise à l'échelle et la transparence fonctionnent correctement?

Était-ce utile?

La solution

Quel type de bouton utilisez-vous?

À en juger par son son, vous utilisez peut-être le style UIButtonTypeRoundedRect, mais UIButtonTypeCustom peut être plus approprié. Vous pouvez modifier cela dans la fenêtre d'inspecteur d'Interface Builder.

Autres conseils

@Christopher Fairbaim a raison de suggérer l’utilisation de UIButtonTypeCustom. Utiliser UIButtonTypeRoundedRect vous donnera l’arrière-plan blanc dans les zones transparentes.

Cependant, le câblage dans Interface Builder a ses limites. Si vous souhaitez générer de manière dynamique UIViews, UIButtons et les actifs à partir d'un ensemble de données ou en vous basant sur les entrées de l'utilisateur, procédez de manière programmée.

Pour créer le bouton: (Remarque: cela fonctionnera également avec d'autres UIButtonTypes, mais j'ai utilisé UIButtonTypeCustom pour cet exemple de transparence particulier.)

UIButton *btnName = [UIButton buttonWithType:UIButtonTypeCustom];

Pour modifier les propriétés souhaitées:

btnName.backgroundColor = [UIColor clearColor];
btnName.frame = CGRectMake(100, 100, 72, 37);  //(X coord, Y coord, width, height)
[btnName addTarget:myActionClassName action:@selector(myActionName) forControlEvents:UIControlEventTouchUpInside];

Pour ajouter des images pour différents états (en supposant qu'il s'agisse de fichiers .png transparents):

UIImage *btnNameImageNormal = [UIImage imageNamed:@"btnNameNormal.png"];
[btnName setBackgroundImage:btnMenuImageNormal forState:UIControlStateNormal];
UIImage *btnNameImagePressed = [UIImage imageNamed:@"btnNamePressed.png"];
[btnName setBackgroundImage:btnNameImagePressed forState:UIControlStateHighlighted];

Pour ajouter le bouton à la vue (depuis une classe viewController):

[self addSubview:btnName];

(Pardonnez les fautes de frappe, car j'ai copié et collé d'un de mes projets et essayé de généraliser le nom.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top