我正在尝试创建自定义形状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
提出任何建议?
因为这是我迄今为止所能得到的:
答案 0 :(得分:5)
不要玩角半径。圆圈没有角落。要使按钮显示为圆圈,请将按钮的layer
屏蔽为圆圈。
答案 1 :(得分:3)
您正在根据按钮的宽度设置半径。通过截屏的外观,当您开始时按钮不是正方形,因此圆角不能创建圆。
答案 2 :(得分:3)
NSButton是NSView的子类,因此NSView中的所有方法(例如drawRect(_ :))也可用于NSButton。
因此,请创建一个新的 Button.swift ,您可以在其中绘制自定义布局
import Cocoa
class Button: NSButton {
override func drawRect(dirtyRect: NSRect) {
super.drawRect(dirtyRect)
// Drawing code here.
var path = NSBezierPath(ovalInRect: dirtyRect)
NSColor.greenColor().setFill()
path.fill()
}
}
精彩教程Here。它是iOS,但非常相似!