是否可以制作圆形NSButton?

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

因为这是我迄今为止所能得到的:

在此输入图像描述

Wil*_*jay 8

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 ,但非常相似!


mat*_*att 5

不要玩角半径.圆圈没有角落.要使按钮显示为圆形,请将按钮屏蔽layer为圆形.