Quelle est la meilleure façon de créer un NSButton avec une image d'arrière-plan personnalisée, capable d'avoir une largeur variable, sans que le cadre du coin ne soit étiré? Je sais qu'il existe des méthodes pratiques pour faire cela avec UIButton: http://jainmarket.blogspot.com/2009/04/create-uibuttonbutton-with-images.html mais je n'ai rien vu de similaire dans NSButton.NSButton avec largeur variable, coins arrondis
Répondre
Je devais avoir un fond de bouton personnalisé, voici comment je l'ai fait. J'ai fait une méthode sous-classe NSButton et l'emportaient sur drawRect:
- (void)drawRect:(NSRect)dirtyRect
{
// My buttons don't have a variable height, so I make sure that the height is fixed
if (self.frame.size.height != 22) {
self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, self.frame.size.width,
22.0f);
}
//
switch (self.state) {
// Onstate graphics
case NSOnState:
NSDrawThreePartImage(self.bounds,
[NSImage imageNamed:@"btnmain_lb_h.png"], [NSImage imageNamed:@"btnmain_bg_h.png"], [NSImage imageNamed:@"btnmain_rb_h.png"],
NO, NSCompositeSourceAtop, 1.0, NO);
// Offstate graphics
default:
case NSOffState:
NSDrawThreePartImage(self.bounds,
[NSImage imageNamed:@"btnmain_lb.png"], [NSImage imageNamed:@"btnmain_bg.png"], [NSImage imageNamed:@"btnmain_rb.png"],
NO, NSCompositeSourceAtop, 1.0, NO);
break;
}
[super drawRect:dirtyRect];
}
alors je pourrais mettre les boutons en utilisant Interface Builder, et pour obtenir les graphiques personnalisés que je viens de changer la classe à ma nouvelle sous-classe.
NSButton
n'a pas les mêmes méthodes de commodité pour les images d'arrière-plan que UIButton
(ce qui est étrange et espérer qu'Apple comble cet écart). Vous aurez besoin de créer un bouton personnalisé mon sous-classement NSView
et en manipulant la largeur variable et les coins vous-même. Je ne pense pas que ce sera facile, mais je ne pense pas que ce serait terriblement difficile non plus.
cela a fonctionné parfaitement bien pour moi:
[self.addBuddyCommitButton.cell setBezelStyle:NSRoundedBezelStyle];
après avoir écrasé drawBezelWithFrame: (NSRect) frame inView: (NSView *) controlView cela fonctionne! – tomeron11
Cette vidéo explique une méthode qui semble être simple et ne nécessite qu'une seule image du bouton: http://youtu.be/7MZJxPOo_xU
- 1. Coins arrondis fluides avec jQuery
- 2. UIToolbar avec les coins arrondis
- 3. Tables avec des coins arrondis
- 4. Film rétractable IE6 avec coins arrondis
- 5. Optimisation des coins arrondis
- 6. Prototype coins arrondis
- 7. Coins arrondis de MKMapView
- 8. RMagick coins arrondis
- 9. Adobe Catalyst: coins arrondis
- 10. Jmagick coins arrondis
- 11. Coins arrondis sur NSTableView
- 12. Coins arrondis dans IE
- 13. Problème avec les coins arrondis sans image
- 14. JavaScript coins arrondis avec fond transparent
- 15. jQuery coins arrondis avec bordure dans IE
- 16. Coins arrondis avec Canvas/VML dans IE8
- 17. Boîte de dialogue jquery avec coins arrondis
- 18. Coins arrondis sur les images avec jquery
- 19. WPF: cube 3D avec des coins arrondis
- 20. coins arrondis avec effets d'arrière-plan transparents
- 21. AJAX Control Toolkit Coins arrondis
- 22. IE7 + coins arrondis w/jQueryUI
- 23. Coins arrondis sur un fieldset
- 24. Coins arrondis utilisant 3 images
- 25. Coins arrondis Image Changement sur Hover
- 26. UIVisez les coins arrondis Question
- 27. SilverGrid 3 DataGrid - Coins arrondis
- 28. bouton CSS avec des coins arrondis qui réagit aux clics
- 29. Coins arrondis dans les arbres TikZ
- 30. Création CSS3 coins arrondis dans Opera
Honte droit? :) Pas comme la méthode de commodité dans UIButton est vraiment pratique. – BadPirate