在 NSTextView 下面添加一个 NSVisualEffectView
Add a NSVisualEffectView below NSTextView
我想在我的 NSTextView 中添加一个 NSVisualEffectView,但是当我添加它时,文本在 NSVisualEffectView 下方,那么,我如何在文本下方添加 NSVisualEffectView?
我的代码 OS X:
class myTextView: NSTextView {
override func awakeFromNib() {
let visualEffectView = NSVisualEffectView(frame: NSMakeRect(20, 20, 30, 18))
visualEffectView.material = NSVisualEffectMaterial.Dark
visualEffectView.blendingMode = NSVisualEffectBlendingMode.BehindWindow
self.addSubview(visualEffectView)
}
}
self.sendSubviewToBack(visualEffectView)
但是视觉效果需要应用于父容器,而不是文本视图本身,所以如果我正确理解您的代码,您需要将整个内容移至父视图。
也许这会对你有所帮助:
class MyTextView: NSTextView {
lazy var visualEffectView: NSVisualEffectView = {
let visualEffectView = NSVisualEffectView()
visualEffectView.material = NSVisualEffectMaterial.Dark
visualEffectView.blendingMode = NSVisualEffectBlendingMode.BehindWindow
return visualEffectView
}()
override func awakeFromNib() {
super.awakeFromNib()
self.drawsBackground = false
}
override func viewDidMoveToSuperview() {
super.viewDidMoveToSuperview()
if let containerView = self.superview?.superview?.superview {
containerView.addSubview(self.visualEffectView, positioned: .Below, relativeTo: self)
}
}
override func resizeSubviewsWithOldSize(oldSize: NSSize) {
super.resizeSubviewsWithOldSize(oldSize)
if let superview = self.superview?.superview {
self.visualEffectView.frame = superview.frame
}
}
}
它是滚动视图和剪辑视图中的文本视图,因此您必须获取其父视图。
我想在我的 NSTextView 中添加一个 NSVisualEffectView,但是当我添加它时,文本在 NSVisualEffectView 下方,那么,我如何在文本下方添加 NSVisualEffectView?
我的代码 OS X:
class myTextView: NSTextView {
override func awakeFromNib() {
let visualEffectView = NSVisualEffectView(frame: NSMakeRect(20, 20, 30, 18))
visualEffectView.material = NSVisualEffectMaterial.Dark
visualEffectView.blendingMode = NSVisualEffectBlendingMode.BehindWindow
self.addSubview(visualEffectView)
}
}
self.sendSubviewToBack(visualEffectView)
但是视觉效果需要应用于父容器,而不是文本视图本身,所以如果我正确理解您的代码,您需要将整个内容移至父视图。
也许这会对你有所帮助:
class MyTextView: NSTextView {
lazy var visualEffectView: NSVisualEffectView = {
let visualEffectView = NSVisualEffectView()
visualEffectView.material = NSVisualEffectMaterial.Dark
visualEffectView.blendingMode = NSVisualEffectBlendingMode.BehindWindow
return visualEffectView
}()
override func awakeFromNib() {
super.awakeFromNib()
self.drawsBackground = false
}
override func viewDidMoveToSuperview() {
super.viewDidMoveToSuperview()
if let containerView = self.superview?.superview?.superview {
containerView.addSubview(self.visualEffectView, positioned: .Below, relativeTo: self)
}
}
override func resizeSubviewsWithOldSize(oldSize: NSSize) {
super.resizeSubviewsWithOldSize(oldSize)
if let superview = self.superview?.superview {
self.visualEffectView.frame = superview.frame
}
}
}
它是滚动视图和剪辑视图中的文本视图,因此您必须获取其父视图。