J'essaie de créer un uibarbuttonitem personnalisé qui utilise juste un PNG avec transparence afin que je n'ai qu'une icône en tant que bouton. Lorsque j'essaie de régler l'image du bouton, réglez l'arrière-plan comme blanc et définissez le style sur plain, je reçois toujours une ombre intérieure et une bordure noire autour de elle.
Qu'est-ce qui donne? P>
p>
J'ai essayé le code ci-dessous et met toujours la frontière noire autour de lui. < / p> Ce que j'ai remarqué, c'est si je fais une SEGUE modale le bouton, le code ci-dessus a toujours une bordure noire qui l'entoure, mais si je fais une SEGUE poussée, il ne faut pas ? Wtf? P> p>
6 Réponses :
essayez d'utiliser [uibarbuttonitem initwithcustomview]
Essayez ce code ..
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; UIImage *btnImage = [UIImage imageNamed:@"bg"]; [button setImage:btnImage forState:UIControlStateNormal]; button.frame = CGRectMake(0, 0, btnImage.size.width, btnImage.size.height); [button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside]; UIImage *icon = [UIImage imageNamed:@"icon"] UIImageView *iconView = [[UIImageView alloc] initWithImage:icon]; iconView.frame = CGRectMake(0, 0, icon.size.width, icon.size.height); [button addSubview:iconView]; iconView..userInteractionEnabled=NO; [iconView centerBothDirections]; [iconView release]; UIBarButtonItem *barbtn = [[[UIBarButtonItem alloc] initWithCustomView:button] autorelease]; self.navigationItem.leftBarButtonItem =barbtn
Vous devez définir le bouton Type sur personnalisé fort> et l'image d'icône sur le bouton puis réglez ce bouton sur votre barbouttonitem comme ceci: p>
Vous voulez vous assurer que l'utilisateur n'a aucun problème à toucher le bouton, vous devez affecter une nouvelle uIView avec les limites que vous souhaitez pouvoir toucher, puis ajouter le bouton à cette vue puis lancer la barboutton avec ce nouvellement attribué. voir à la place
i personnellement comme approche de Flattikit en aplatit simplement toute l'interface utilisateur par l'interface uiapppearance
essentiellement, vous "D faire quelque chose comme: p>
J'ai utilisé le code suivant pour définir le bouton de navigation personnalisé P> UIImage *navBackgroundImage = [UIImage imageNamed:@"nav_bar.png"];
[[UINavigationBar appearance] setBackgroundImage:navBackgroundImage forBarMetrics:UIBarMetricsDefault];
Il vaut la peine d'expliquer que cela mettra à jour tous les boutons de retour et les barres de navigation tout au long de l'application - probablement la meilleure réponse.
Sub Classez l'UinavigationController et modifiez la barre de navigation et utilisez la sous-classe comme outil de navigation principal,
J'ai compris votre problème. p>
Lorsque vous appuyez en réalité un Mais vous pouvez ajouter un autre SO PREMIER SO PREMIER Faites glisser un uiviewcontroller code>, il fera partie de l'uoinavigationController existant code>. Donc, la barre d'Uinavigation code> conserve. Mais lorsque vous utilisez
modalviewController code> c'est juste un autre
uiviewcontroller code> type de "ajouté" à votre
uiviewcontroller existant code>. Donc, le
uinavigationbar code> ne sera pas là. p>
uinavigationbar code> à partir de
xib code> et ajoutez un
uibutton code>. Mais n'ajoutez pas directement le
uibutton code>, si vous le faites, il sera automatiquement converti au
UIBARBUTON CODE> le rendant bordé. p>
uibutton normal > à votre
uiview code> (Barre de navigation non de navigation). Changez-le en personnalisé et ajoutez
uiImage code> à l'aide de
Inspecteur d'attributs code>. Faites glisser cette image sur votre
uinavigationbar code> [code>. Cela fonctionnera comme je l'ai essayé juste maintenant. Vous pouvez voir le tir à l'écran ci-dessous. P>
p>
En fait, vous ne pouvez même pas accéder à la barre de navigation du contrôleur d'affichage présenté avec Modal Way. Vous devez donc ajouter votre propre barre d'uavigation (personnalisé).
J'ai été suivi pour vos pas ... Ce type d'action de bouton ne fonctionne pas @Property (faible, nonatomique) iboutlet uibarbuttonitem * Sidebarbutton; Donner une action de sortie, mais l'action des boutons ne fonctionne pas