2017-07-06 2 views
0

実行時にロードできるカスタムNSView(Header)があります。しかし、このカスタムNSView(Header)は、実行時に別のカスタムNSViewに埋め込まれ、そのサイズが大きくなり、下部に余分なスペースが生成されます(この余分なスペースは必要ありません)。この問題がないxibファイルをロードする別の方法はありますか?カスタムNSViewにxibファイルをロードすると、別のカスタムNSViewに埋め込まれます

これは、それがどのように見えるかです:あなたが制約とビューを使用して、独自のヘッダを追加しないのはなぜ

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) 
    } 
} 

答えて

0

:ここenter image description here

は、私はXIBファイルをロードしています方法です。あまりにも簡単です。

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

+1

ねえクリスティアン、NSViewのこの作品でしょうか? – Rana

+0

NSViewをiOSデスクトップアプリケーション用に開発する場合は、UIViewを使用しない場合は必ず確認してください。 NSViewを使用したいくつかの例を示します。 http://www.knowstack.com/swift-autolayout-visual-format-language-sample-code/ –

関連する問題