In case someone needs help with this, here is my solution:
[code]class ImageViewController: NSViewController {
var image : NSImage?
private lazy var imageView : NSImageView = {
let iv = NSImageView()
iv.translatesAutoresizingMaskIntoConstraints = false
iv.imageScaling = .ScaleProportionallyUpOrDown
iv.bind(NSValueBinding, toObject: self, withKeyPath: "image", options: nil)
return iv
}()
override func viewDidLoad() {
super.viewDidLoad()
setupConstraints()
}
override func loadView() {
// The XIB would define the initial size
let initialFrame = NSRect(x: 0, y: 0, width: 500, height: 300)
view = NSView(frame: initialFrame)
view.addSubview(imageView)
}
func setupConstraints() {
let views = ["imageView" : imageView]
let horizontalConstraints = NSLayoutConstraint.constraintsWithVisualFormat("|[imageView]|", options: [], metrics: nil, views: views)
let verticalConstraints = NSLayoutConstraint.constraintsWithVisualFormat("V:|[imageView]|", options: [], metrics: nil, views: views)
view.addConstraints(verticalConstraints)
view.addConstraints(horizontalConstraints)
}
deinit {
imageView.unbind(NSValueBinding)
}
}[/code]