自定义NSTitlebar之NSTitlebarAccessoryViewController

在10.10 之后的版本会简单一下,  
第一步, 给窗口添加Toolbar, 但删掉Toolbar中的所有内容, 取消Customizable(相当于禁用Toolbar自定义功能) 
 
第二步, 
//Swift 
window.titleVisibility = .Hidden 
//OC 
[window setTitleVisibility:NSWindowTitleHidden]; 
 
 
第三步,子类化 NSTitlebarAccessoryViewController 用来自定义上面的按钮 
 
 
第四步, 
// Swift  
titlebarController.layoutAttribute = .Left 
window.addTitlebarAccessoryViewController(titlebarController)
 
// OC 
[titlebarController setLayoutAttribute:NSLayoutAttributeLeft]; 
[window addTitlebarAccessoryViewController:titlebarController]; 
 
这样做完样式基本实现了, 但标题栏不透明, 没有磨砂效果 
 
用下面的方法在 windowDidLoad里 给 titlebar 加上透明背景 
// Swift 
        guard let themeView = window.contentView?.superview else { 
            return 
        } 
        if themeView.subviews.count < 2 { return } 
        let titlebarView = themeView.subviews[1].subviews[0] 
        titlebarView.autoresizesSubviews = true 
         
        var rect = titlebarView.bounds 
        rect.origin.y = 0.5 
         
        let backgroundView = NSVisualEffectView(frame: rect) 
        backgroundView.material = .Titlebar 
         
        titlebarView.addSubview(backgroundView, positioned: .Below, relativeTo: nil) 
 
        backgroundView.autoresizingMask = [.ViewMinXMargin, .ViewMaxXMargin, .ViewWidthSizable, .ViewMinYMargin, .ViewMaxYMargin, .ViewHeightSizable]

效果图:


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值