是否可以制作一个圆形的 NSButton?
Is it possible to make a circular NSButton?
我正在尝试创建自定义形状 NSButton
。特别是我正在尝试使用自定义图像制作一个圆形按钮。我在创建自定义 UIButton
时发现了 a tutorial 并尝试将其适应 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.
}
}
}
我做错了什么?我怎样才能制作一个圆形的 NSButton?你能就替换 clipsToBounds
提出什么建议吗?
因为这是我到目前为止能够得到的:
您正在根据按钮的宽度设置半径。从你的截图来看,开始时按钮不是正方形,所以圆角不能创建圆。
不要玩转角半径。圆没有角。要使按钮显示为圆形,请将按钮的 layer
遮罩为圆形。
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()
}
}
很棒的教程Here。它是 iOS ,但非常相似!
我正在尝试创建自定义形状 NSButton
。特别是我正在尝试使用自定义图像制作一个圆形按钮。我在创建自定义 UIButton
时发现了 a tutorial 并尝试将其适应 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.
}
}
}
我做错了什么?我怎样才能制作一个圆形的 NSButton?你能就替换 clipsToBounds
提出什么建议吗?
因为这是我到目前为止能够得到的:
您正在根据按钮的宽度设置半径。从你的截图来看,开始时按钮不是正方形,所以圆角不能创建圆。
不要玩转角半径。圆没有角。要使按钮显示为圆形,请将按钮的 layer
遮罩为圆形。
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()
}
}
很棒的教程Here。它是 iOS ,但非常相似!