什么是最好的方式来创建一个自定义背景图像,可以有不同的宽度,没有使角边框看起来拉伸NSButton?我知道有一些方便的方法可以用UIButton做到这一点:http://jainmarket.blogspot.com/2009/04/create-uibuttonbutton-with-images.html但我在NSButton中没有见过类似的东西。NSButton与可变大小的宽度,圆角
5
A
回答
7
我需要一个自定义按钮背景,下面是我如何做到的。我做了一个NSButton子类,并推翻的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];
}
然后我可以把使用界面生成器的按钮,并获得自定义图形我只需要将类更改为我的新的子类。
1
NSButton
没有像UIButton
那样的背景图片的方便方法(这很奇怪,希望Apple能够弥合这种差距)。你需要创建一个自定义按钮我的子类NSView
和自己处理变量的宽度和角落。我不认为这会很容易,但我认为这也不是非常困难。
2
这个工作完美的罚款对我来说:
[self.addBuddyCommitButton.cell setBezelStyle:NSRoundedBezelStyle];
+0
覆盖drawBezelWithFrame后:(NSRect)frame inView:(NSView *)controlView它的工作原理! – tomeron11 2013-05-15 08:51:51
0
这部影片介绍,这似乎是一个简单的方法,只需要按钮的一个形象:http://youtu.be/7MZJxPOo_xU
相关问题
- 1. 圆角改变UIView大小
- 2. DIV与最大可能的大小(列跨越可用宽度)
- 3. 画线宽度与椭圆宽度
- 4. 角度js指令的大小与jQuery UI不能设置最大宽度
- 5. 最小宽度,最大宽度的CSS使用最小宽度
- 6. 可变宽度barplot与seaborn
- 7. 使用像素最小和最大宽度的可变宽度DIV?
- 8. 变焦时改变椭圆的宽度
- 9. 浏览器调整大小后可变宽度不会改变
- 10. 使用jquery改变div宽度大小
- 11. 可调整大小的角度
- 12. Draggable和角度的可调整大小
- 13. css最小宽度和最大宽度?
- 14. JTextPane首选大小与固定宽度
- 15. 最大高度和宽度与jQuery的大小调整
- 16. 如何根据浏览器窗口的可变宽度设置px中的最小宽度和最大宽度?
- 17. 两个固定宽度区间之间的可变宽度div(最小宽度)
- 18. 圆与高度100%和匹配宽度
- 19. 是否可以制作圆形的NSButton?
- 20. 如何在NSButton上绘制右上角的圆角?
- 21. safari svg与双倍宽度的椭圆
- 22. CSS - 最大宽度和椭圆
- 23. 最大宽度100px与宽度100px,为什么最大宽度短于宽度?
- 24. 可调整大小的视图的圆角
- 25. FancyBox调整大小宽度
- 26. 与SurfaceHolder.setFixedSize(宽度,高度)设置一个SurfaceView的大小
- 27. 项目与可变宽度上GridLayoutManager
- 28. jQuery UI的大小可调整宽度高度
- 29. 我怎么可以加入一个更小,更大的圆边圆角?
- 30. 浏览器大小(宽度和高度)
羞耻吗? :)不像UIButton中的便捷方法真的很方便。 – BadPirate 2010-09-20 22:18:41