概述
class CustomViewButton: NibView {
var trackingArea: NSTrackingArea?
var select = false
var normalImg: NSImage?
var selectImg: NSImage?
var normalColor = NSColor.white
var selectColor = Color.themeColor
@IBOutlet weak var image: NSImageView!
@IBOutlet weak var title: NSTextField!
override func draw(_ dirtyRect: NSRect) {
super.draw(dirtyRect)
wantsLayer = true
self.layer?.backgroundColor = colorLiteral(red: 0.262745098, green: 0.5059999824, blue: 1, alpha: 1)
title.textColor = normalColor
image.image = normalImg
}
override func mouseUp(with event: NSEvent) {
super.mouseUp(with: event)
if event.type == .leftMouseUp {
select = !select
if select {
self.layer?.backgroundColor = colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
title.textColor = selectColor
image.image = selectImg
}else {
self.layer?.backgroundColor = colorLiteral(red: 0.262745098, green: 0.5059999824, blue: 1, alpha: 1)
title.textColor = normalColor
image.image = normalImg
}
}
}
override func mouseDown(with event: NSEvent) {
super.mouseDown(with: event)
if event.type == .leftMouseDown {
self.layer?.backgroundColor = colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
title.textColor = selectColor
image.image = selectImg
}
}
override func mouseEntered(with event: NSEvent) {
super.mouseEntered(with: event)
if !select {
self.layer?.backgroundColor = colorLiteral(red: 0.3385708332, green: 0.554590404, blue: 1, alpha: 1)
title.textColor = normalColor
image.image = normalImg
}
}
override func mouseExited(with event: NSEvent) {
super.mouseExited(with: event)
if !select {
self.layer?.backgroundColor = colorLiteral(red: 0.262745098, green: 0.5059999824, blue: 1, alpha: 1)
title.textColor = normalColor
image.image = normalImg
}
}
override func updateTrackingAreas() {
super.updateTrackingAreas()
if trackingArea != nil {
removeTrackingArea(trackingArea!)
}
let options: NSTrackingArea.Options = [.inVisibleRect, .mouseEnteredAndExited, .activeAlways]
trackingArea = NSTrackingArea(rect: .zero, options: options, owner: self, userInfo: nil)
addTrackingArea(trackingArea!)
}
}
最后
以上就是漂亮鸡翅为你收集整理的Mac OS 用NSView做出按钮效果的全部内容,希望文章能够帮你解决Mac OS 用NSView做出按钮效果所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复