How to customize disclosure cell in view-based NSOutlineView

前端 未结 4 1909

I\'m trying to customize the disclosure arrow appearance in my view-based NSOutlineView. I saw that it\'s recommended to use

- (void)outlineView:(NSOutlineVi         


        
4条回答
  •  不知归路
    2020-12-05 03:58

    For Swift 4.2 macOS 10.14, @WetFish's answer can be implemented as follows:

    class SidebarView: NSOutlineView {
    
      override func makeView(withIdentifier identifier: NSUserInterfaceItemIdentifier, owner: Any?) -> NSView? {
        let view = super.makeView(withIdentifier: identifier, owner: owner)
    
        if identifier == NSOutlineView.disclosureButtonIdentifier {
          if let btnView = view as? NSButton {
            btnView.image = NSImage(named: "RightArrow")
            btnView.alternateImage = NSImage(named: "DownArrow")
    
            // can set properties of the image like the size
            btnView.image?.size = NSSize(width: 15.0, height: 15.0)
            btnView.alternateImage?.size = NSSize(width: 15.0, height: 15.0)
          }
        }
        return view
      }
    
    }
    

    Looks quite nice!

提交回复
热议问题