【问题标题】:Loading xib file into an custom NSView gets embedded inside another custom NSView将 xib 文件加载到自定义 NSView 中会嵌入另一个自定义 NSView
【发布时间】:2017-12-09 19:44:01
【问题描述】:

我有一个自定义 NSView(称为 Header),我可以在运行时加载它。然而,这个自定义的 NSView (Header) 在运行时被嵌入到另一个更大的自定义 NSView 中,并且它在底部产生了额外的空间(我不想要这个额外的空间)。是否有另一种方法来加载不会出现此问题的 xib 文件?

这就是它的样子:

这是我加载 xib 文件的方式:

import Cocoa

class Header: NSView {

  @IBOutlet var view: Header!
  @IBOutlet weak var dateLabel: NSTextField!
  override func draw(_ dirtyRect: NSRect) {
    super.draw(dirtyRect)

    // Drawing code here.
  }
  override init(frame frameRect: NSRect) {
    super.init(frame: frameRect)
    var topLevelObjects = NSArray()
    Bundle.main.loadNibNamed("Header", owner: self, topLevelObjects: &topLevelObjects)

    let view = ((topLevelObjects as Array).filter { $0 is NSView })[0] as! NSView
    self.frame = NSRect(x: 0, y:0, width: view.frame.width, height: view.frame.height)
    self.addSubview(self.view)
  }

  required init?(coder: NSCoder) {
    super.init(coder: coder)
  }
}

【问题讨论】:

    标签: swift xcode macos swift3 interface-builder


    【解决方案1】:

    为什么不使用约束和视图添加自己的标题。太容易了。

    let mainContainer = UIView()
    mainContainer.backgroundColor = UIColor.blue
    mainContainer.translatesAutoresizingMaskIntoConstraints = false
    
    self.view.addSubview(mainContainer)
    
    let views = ["mainContainer" : mainContainer]
    
    let metrics = ["mainContainerWidth" : self.view.bounds.width]
    
    self.view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[mainContainer]|", options: [], metrics: metrics, views: views))
    
    self.view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[mainContainer]|", options: [], metrics: metrics, views: views))
    

    这里有几个使用 VF 的例子。

    希望对你有所帮助。

    https://github.com/CristianCardosoA/Auto-layout-VF

    【讨论】:

    • 确定如果你正在开发 NSView 是为 iOS 桌面应用程序开发的,如果不使用 UIView。这里有几个使用 NSView 的例子。 knowstack.com/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 2012-06-09
    • 2011-11-15
    相关资源
    最近更新 更多