这让我感到非常轻松,但我无法让它发挥作用。
我正在创建一个按钮:
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
中存储了2张circle@2x.png
和/Resources/img
张图片。
毋庸置疑,我得到一个没有文字或图像的灰色按钮。此外,p button.image
会返回nil
。
我已多次清理和重建我的项目。
这似乎不应该如此难以实施。我在俯瞰什么?
答案 0 :(得分:1)
首先,我要说我对OSX没有经验,但我希望这个iOS信息会有所帮助。我被告知他们非常相同。您需要确保使用自定义按钮(UIButtonTypeCustom)。这将允许您使用背景图像功能。
这里有一些很好的示例代码,可能对您有帮助。
https://github.com/IconoclastLabs/rubymotion_cookbook/tree/master/ch_2/16_buttons
再一次,如果这不能胜任,我很抱歉,但我想我会发布这些信息来帮助你!
答案 1 :(得分:0)
所以我想出了这个。似乎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
肯定会想要找到一种更简洁的方法来做到这一点,但是现在,它完成了工作!