NSView的特定圆角

Posted

技术标签:

【中文标题】NSView的特定圆角【英文标题】:Specific Round Corner of NSView 【发布时间】:2020-07-07 08:34:35 【问题描述】:

我想要一个带有收音机的 NSView 的特定角落,但我不知道该怎么做。 对于所有角落,我都在使用

class StyledButton: NSView 
let roundLayer: CALayer = CALayer()

required init(coder aDecoder: NSCoder) 
    super.init(coder: aDecoder)!
    setup()


override init(frame: CGRect) 
    super.init(frame: frame)
    setup()


func setup() 
    self.wantsLayer = true
    self.layer?.addSublayer(roundLayer)
    roundLayer.frame = self.bounds
    roundLayer.cornerRadius = 3
    roundLayer.backgroundColor = NSColor.redColor().CGColor

【问题讨论】:

【参考方案1】:

你可以使用maskedCorners:

    layerMinXMinYCorner = bottom left corner
    layerMaxXMinYCorner = bottom right corner
    layerMaxXMaxYCorner = top right corner
    layerMinXMaxYCorner = top left corner

这是一个仅圆角的示例 bottom right and top right 角:

        let rightRoundView = NSView(frame: CGRect(x: 100, y: 100, width: 128, height: 128))
        rightRoundView.wantsLayer = true
        rightRoundView.layer?.cornerRadius = 25
        if #available(OSX 10.13, *) 
            rightRoundView.layer?.maskedCorners = [.layerMaxXMinYCorner, .layerMaxXMaxYCorner]
         else 
            // Fallback on earlier versions
        

【讨论】:

以上是关于NSView的特定圆角的主要内容,如果未能解决你的问题,请参考以下文章

xml 圆角布局,圆角为特定角

给Button添加特定个数的圆角

如何通过点击 UITextView 中的特定字符来显示圆角灰色背景?

如何在iOS上仅在具有清晰颜色的模糊视图底部获得圆角?

iOS - 指定视图的圆角个数-b

如何为我在 Android 中用作背景的可绘制对象添加圆角?