Ann*_*hen 4 macos nsbutton swift
我正在尝试创建自定义形状NSButton.特别是我试图使用自定义图像制作一个圆形按钮.我找到了一个关于自定义创建的教程,UIButton并尝试将其改编为NSButton.但是有一个很大的问题.clipsToBounds似乎只是iOS(
这是我的代码:
import Cocoa
class ViewController: NSViewController {
@IBOutlet weak var mainButton: NSButton!
var size = 32
override func viewDidLoad() {
super.viewDidLoad()
configureButton()
// Do any additional setup after loading the view.
}
func configureButton()
{
mainButton.wantsLayer = true
mainButton.layerContentsRedrawPolicy = NSViewLayerContentsRedrawPolicy.OnSetNeedsDisplay
mainButton.layer?.cornerRadius = 0.5 * mainButton.bounds.size.width
mainButton.layer?.borderColor = NSColor(red:0.0/255.0, green:122.0/255.0, blue:255.0/255.0, alpha:1).CGColor as CGColorRef
mainButton.layer?.borderWidth = 2.0
}
override var representedObject: AnyObject? {
didSet {
// Update the view, if already loaded.
}
}
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?如何制作圆形NSButton?您能否提出更换建议clipsToBounds?
因为这是我迄今为止所能得到的:
NSButton 是 NSView 的子类,所以 NSView 中的所有方法,比如 drawRect(_:),在 NSButton 中也是可用的。
所以创建一个新的Button.swift来绘制你的自定义布局
import Cocoa
class Button: NSButton {
override func drawRect(dirtyRect: NSRect) {
super.drawRect(dirtyRect)
// Drawing code here.
let path = NSBezierPath(ovalIn: dirtyRect)
NSColor.green.setFill()
path.fill()
}
}
Run Code Online (Sandbox Code Playgroud)
很棒的教程在这里。它是 iOS ,但非常相似!