小编Jos*_*ard的帖子

如何观察NSView框架的变化?

我有一个NSView,如果框架改变我需要注意.

class CustomView: NSView {

    override var frame: NSRect {

        didSet {
            Swift.print("changed frame: \(self.frame)")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是如果调整superView框架的大小,我只会得到这个"notifikation".

如果我在NSView类中执行类似的操作:

NotificationCenter.default.addObserver(forName:  Notification.Name(rawValue: "changeOwnSize"), object: nil, queue: nil) { notification in

          let newSize = NSSize(width: self.frame.width / 2, height: self.frame.height)
          self.setFrameSize(newSize)
}
Run Code Online (Sandbox Code Playgroud)

didSet功能根本没有反应.虽然框架大小已更改.谢谢你的建议.

macos frame nsview ios swift

2
推荐指数
1
解决办法
1418
查看次数

NSSearchField:如何隐藏图标和边框?

这是这个问题的重复。因为我对 Swift 的了解都是 Swift3,所以我想知道是否有人可以“翻译”这个答案中建议的解决方案。

\n\n

还:

\n\n

我制作了一个没有边框的 NSSearchfield,将其放入框架视图中,它仍然显示灰色边框。我很好奇如何禁用动画灰色边框,甚至如何更改灰色“搜索”线的颜色。

\n\n

我的丑陋结果现在看起来像这样:

\n\n

在此输入图像描述

\n\n

如果有人能告诉我如何管理这个困难的 NSSearchfield,那将是一个很大的帮助。

\n\n

//更新

\n\n

根据firstinq\xc2\xb4s的回答,图标现在消失了,这很棒。但仍然存在令人不安的动画灰色边框。我可以\xc2\xb4t理解:NSSearchFielt位于NSView(蓝色边框)内。所以 NSView 之外的所有内容都应该隐藏,对吧?那么为什么我仍然看到灰色边框?cell.isBordered = false没有效果。\n有什么建议如何处理吗?

\n\n

在此输入图像描述

\n\n

这就是我绘制 NSView 边框的方法:

\n\n
class SearchFieldBorder: NSView {\n\n    override func draw(_ dirtyRect: NSRect) {\n        super.draw(dirtyRect)\n\n        self.layer?.borderWidth = 1\n        self.layer?.borderColor = NSColor.blue.cgColor\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

cocoa drawing subclass nssearchfield swift

1
推荐指数
1
解决办法
1357
查看次数

标签 统计

swift ×2

cocoa ×1

drawing ×1

frame ×1

ios ×1

macos ×1

nssearchfield ×1

nsview ×1

subclass ×1