如何在 RubyMotion 中实现 OSX 上的图像按钮?
How to implement image button on OSX in RubyMotion?
我觉得这应该非常简单,但我就是无法让它工作。
我正在这样创建一个按钮:
closeButton = NSButton.alloc.initWithFrame(
[[10, 10], [100, 22]]
).tap do |button|
button.bezelStyle = NSShadowlessSquareBezelStyle
button.buttonType = NSMomentaryChangeButton
button.title = 'Close'
button.bordered = false
button.image = NSImage.imageNamed('img/circle')
p button.image
button.imagePosition = NSImageOnly
button.target = window
button.action = 'close'
end
circle.png
和 circle@2x.png
两张图片存储在 /Resources/img
.
不用说,我得到一个灰色按钮,其中没有文本或图像。另外,p button.image
returns nil
.
我已经多次清理和重建我的项目。
这似乎并不难实施。我忽略了什么?
首先,让我说我对 OSX 的经验为零,但我希望 iOS 信息能有所帮助。有人告诉我它们非常相似。您需要确保您使用的是自定义按钮 (UIButtonTypeCustom)。这将允许您使用背景图像功能。
这里有一些很好的示例代码,可能会对您有所帮助。
https://github.com/IconoclastLabs/rubymotion_cookbook/tree/master/ch_2/16_buttons
再次抱歉,如果这不能解决问题,但我想我 post 此信息可以提供帮助!
所以我有点明白了。 imageNamed
似乎没有按我预期的方式工作,或者我只是错误地使用了它。
我可以通过执行以下操作在按钮上设置图像:
NSButton.alloc.initWithFrame(
[[110, 10], [100, 22]]
).tap do |button|
neutralImgPath = NSBundle.mainBundle.pathForResource("img/circle2", ofType: "png")
neutralImgUrl = NSURL.fileURLWithPath(neutralImgPath)
neutralImg = NSImage.alloc.initWithContentsOfURL(neutralImgUrl)
button.setImage(neutralImg)
button.setImageScaling(NSImageScaleProportionallyDown)
button.setImagePosition(NSImageOnly)
button.translatesAutoresizingMaskIntoConstraints = false
button.bordered = false
button.bezelStyle = NSShadowlessSquareBezelStyle
button.buttonType = NSMomentaryChangeButton
button.target = MainAppWindow.get
button.action = 'minimize:'
end
很想找出一种更简洁的方法来做到这一点,但就目前而言,它完成了工作!
我觉得这应该非常简单,但我就是无法让它工作。
我正在这样创建一个按钮:
closeButton = NSButton.alloc.initWithFrame(
[[10, 10], [100, 22]]
).tap do |button|
button.bezelStyle = NSShadowlessSquareBezelStyle
button.buttonType = NSMomentaryChangeButton
button.title = 'Close'
button.bordered = false
button.image = NSImage.imageNamed('img/circle')
p button.image
button.imagePosition = NSImageOnly
button.target = window
button.action = 'close'
end
circle.png
和 circle@2x.png
两张图片存储在 /Resources/img
.
不用说,我得到一个灰色按钮,其中没有文本或图像。另外,p button.image
returns nil
.
我已经多次清理和重建我的项目。
这似乎并不难实施。我忽略了什么?
首先,让我说我对 OSX 的经验为零,但我希望 iOS 信息能有所帮助。有人告诉我它们非常相似。您需要确保您使用的是自定义按钮 (UIButtonTypeCustom)。这将允许您使用背景图像功能。
这里有一些很好的示例代码,可能会对您有所帮助。
https://github.com/IconoclastLabs/rubymotion_cookbook/tree/master/ch_2/16_buttons
再次抱歉,如果这不能解决问题,但我想我 post 此信息可以提供帮助!
所以我有点明白了。 imageNamed
似乎没有按我预期的方式工作,或者我只是错误地使用了它。
我可以通过执行以下操作在按钮上设置图像:
NSButton.alloc.initWithFrame(
[[110, 10], [100, 22]]
).tap do |button|
neutralImgPath = NSBundle.mainBundle.pathForResource("img/circle2", ofType: "png")
neutralImgUrl = NSURL.fileURLWithPath(neutralImgPath)
neutralImg = NSImage.alloc.initWithContentsOfURL(neutralImgUrl)
button.setImage(neutralImg)
button.setImageScaling(NSImageScaleProportionallyDown)
button.setImagePosition(NSImageOnly)
button.translatesAutoresizingMaskIntoConstraints = false
button.bordered = false
button.bezelStyle = NSShadowlessSquareBezelStyle
button.buttonType = NSMomentaryChangeButton
button.target = MainAppWindow.get
button.action = 'minimize:'
end
很想找出一种更简洁的方法来做到这一点,但就目前而言,它完成了工作!