¿Cuál es la mejor manera de crear un NSButton con una imagen de fondo personalizada, que pueda tener un ancho variable, sin hacer que el bisel de la esquina parezca estirado? Sé que hay métodos de conveniencia para hacer esto con UIButton: http://jainmarket.blogspot.com/2009/04/create-uibuttonbutton-with-images.html pero no he visto nada similar en NSButton.NSButton con ancho variable, esquinas redondeadas
Respuesta
Necesitaba tener un fondo de botón personalizado, así es como lo hice. Hice una subclase NSButton y drawRect hizo caso omiso de método:
- (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];
}
Entonces podría poner los botones usando el Interface Builder, y para obtener los gráficos personalizados acabo de cambiar la clase de mi nueva subclase.
NSButton
no tiene los mismos métodos de conveniencia para imágenes de fondo como UIButton
(lo cual es extraño y espero que Apple cubra esa brecha). Necesitarás crear un botón personalizado, mi subclasificación NSView
y manejar el ancho y las esquinas variables tú mismo. No creo que sea fácil, pero tampoco creo que sea terriblemente difícil.
Esto funcionó perfectamente bien para mí:
[self.addBuddyCommitButton.cell setBezelStyle:NSRoundedBezelStyle];
después de anular drawBezelWithFrame: (NSRect) frame inView: (NSView *) controlView ¡funciona! – tomeron11
Este video explica un método que parece ser simple y sólo requiere una imagen del botón: http://youtu.be/7MZJxPOo_xU
- 1. UIToolbar con esquinas redondeadas
- 2. Cuadros con esquinas redondeadas
- 3. UIImage con esquinas redondeadas transparentes
- 4. Esquinas redondeadas de fluido con jQuery
- 5. Esquinas redondeadas en UITableView
- 6. Esquinas redondeadas en UIImage
- 7. NSImageView esquinas redondeadas + carrera
- 8. Esquinas redondeadas de MKMapView
- 9. ¿Solo dos esquinas redondeadas?
- 10. QLineEdit Esquinas redondeadas?
- 11. CSS esquinas redondeadas
- 12. UIImage esquinas redondeadas
- 13. CSS esquinas redondeadas Divs
- 14. objetivo c - UINavigationBar con esquinas redondeadas
- 15. Cómo hacer un div con esquinas redondeadas
- 16. ImageView con esquinas redondeadas y sombra interior
- 17. Crear botón con esquinas redondeadas en Android
- 18. Android ImageView con esquinas redondeadas no funciona
- 19. Esquinas interiores redondeadas con marco interior transparente
- 20. Esquinas redondeadas en XSL-FO
- 21. Esquinas redondeadas en un fieldset
- 22. XML Android esquinas redondeadas recortadas
- 23. Esquinas redondeadas UIView o UIImageView
- 24. esquinas redondeadas en las imágenes
- 25. Imagebutton imagen completa, esquinas redondeadas
- 26. Esquinas más redondeadas con CSS3 o con imágenes?
- 27. Esquinas redondeadas del navegador cruzado (sin imagen)
- 28. Configuración de esquinas redondeadas para svg: imagen
- 29. UITableViewCell esquinas redondeadas y subvistas de clip
- 30. Esquinas redondeadas antialias en Android ImageView
La vergüenza ¿verdad? :) No es como el método de conveniencia en UIButton realmente es tan conveniente. – BadPirate