Was ist der beste Weg, um einen NSButton mit einem benutzerdefinierten Hintergrundbild zu erstellen, das eine variable Breite haben kann, ohne dass die Eckenblende gestreckt aussehen? Ich weiß, es gibt bequeme Methoden, um dies mit UIButton zu tun: http://jainmarket.blogspot.com/2009/04/create-uibuttonbutton-with-images.html, aber ich habe nichts ähnliches in NSButton gesehen.NSButton mit variabler Breite, abgerundete Ecken
Antwort
Ich brauchte eine benutzerdefinierte Schaltfläche Hintergrund, hier ist, wie ich es gemacht habe. Ich machte eine NSButton Unterklasse und overrode drawRect Methode:
- (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];
}
Dann könnte ich mit den Tasten Interface Builder setzen und die eigenen Grafiken bekommen muß ich nur noch die Klasse zu meiner neuen Unterklasse ändern.
NSButton
hat nicht die gleichen Komfort-Methoden für Hintergrundbilder wie UIButton
(was ist seltsam, und hier ist zu hoffen, dass Apple Brücken, die Lücke). Sie müssen eine benutzerdefinierte Schaltfläche meiner Unterklasse NSView
erstellen und die variable Breite und Ecken selbst behandeln. Ich denke nicht, dass es einfach wird, aber ich denke auch nicht, dass es sehr schwierig wäre.
dies ist für mich völlig in Ordnung:
[self.addBuddyCommitButton.cell setBezelStyle:NSRoundedBezelStyle];
nach dem Überschreiben von drawBezelWithFrame: (NSRect) Frame inView: (NSView *) controlView es funktioniert! – tomeron11
Dieses Video ein Verfahren erklärt, die einfach zu sein scheint und erfordert nur ein Bild der Schaltfläche: http://youtu.be/7MZJxPOo_xU
- 1. Flüssige abgerundete Ecken mit jQuery
- 2. Abgerundete Ecken
- 3. UITableViewCell: abgerundete Ecken und Schatten
- 4. IE9 fieldset abgerundete Ecken
- 5. Abgerundete Ecken für UITabBar
- 6. QLineEdit Abgerundete Ecken?
- 7. abgerundete Ecken beschneiden
- 8. Abgerundete Ecken von MKMapView
- 9. UIPopoverBackgroundView ohne abgerundete Ecken
- 10. Dropdown-Menü & abgerundete Ecken
- 11. Bootstrap Styling abgerundete Ecken
- 12. Anythingslider abgerundete Ecken Ausgabe
- 13. Abgerundete Ecken auf Bilder
- 14. UINavigationBar Abgerundete zwei Ecken
- 15. Wpf Combobox Abgerundete Ecken
- 16. Abgerundete Ecken auf UIView
- 17. Abgerundete Ecken in XSL-FO
- 18. Abgerundete Ecken auf einem fieldset
- 19. CardView Polsterung und abgerundete Ecken
- 20. fancybox iframe IE abgerundete Ecken
- 21. jQuery Schatten für abgerundete Ecken
- 22. JavaScript abgerundete Ecken mit transparentem Hintergrund
- 23. Abgerundete Ecken auf Bildern mit JQuery
- 24. Abgerundete Ecken auf Bildern mit PHP?
- 25. Abgerundete Ecken für Schaltflächen mit drei Bildern und CSS
- 26. Abgerundete Ecken nur an einigen Ecken in css
- 27. Abgerundete Ecken mit ImageMagick (bakground transparent oder weiß)
- 28. Android XML ziehbar abgerundete Ecken mit Bitmap-Tag
- 29. Cross Browser abgerundete Ecken (kein Bild)
- 30. Abgerundete Ecken eines Gitters in Silverlight
Shame nicht wahr? :) Nicht wie die Bequemlichkeitsmethode in UIButton ist wirklich so praktisch. – BadPirate