Some layout.swift changes. Added support for the metrics parameter and a fitting size calculation function; this will be needed for the next experiment with boxes.
This commit is contained in:
parent
22599c3428
commit
819d778b46
|
@ -90,8 +90,6 @@ class Box : NSView, Control {
|
|||
self.parent = p
|
||||
}
|
||||
|
||||
// TODO stretchiness
|
||||
// - we will need a trailing view if there are no stretchy controls
|
||||
private func relayout() {
|
||||
var constraint: String
|
||||
|
||||
|
@ -144,19 +142,19 @@ class Box : NSView, Control {
|
|||
constraint += "[noStretchyView]"
|
||||
}
|
||||
constraint += "|"
|
||||
var constraints = mkconstraints(constraint, views)
|
||||
var constraints = mkconstraints(constraint, nil, views)
|
||||
self.addConstraints(constraints)
|
||||
|
||||
// next: assemble the views in the secondary direction
|
||||
// each of them will span the secondary direction
|
||||
for i in 0..<n {
|
||||
constraint = "\(self.secondaryDirPrefix)|[view\(i)]|"
|
||||
var constraints = mkconstraints(constraint, views)
|
||||
var constraints = mkconstraints(constraint, nil, views)
|
||||
self.addConstraints(constraints)
|
||||
}
|
||||
if firstStretchy == -1 { // and again to the no-stretchy view
|
||||
constraint = "\(self.secondaryDirPrefix)|[noStretchyView]|"
|
||||
var constraints = mkconstraints(constraint, views)
|
||||
var constraints = mkconstraints(constraint, nil, views)
|
||||
self.addConstraints(constraints)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
// 8 august 2015
|
||||
import Cocoa
|
||||
|
||||
func mkconstraints(constraint: String, views: [String: NSView]) -> [AnyObject] {
|
||||
func mkconstraints(constraint: String, metrics: [String: Double]?, views: [String: NSView]) -> [AnyObject] {
|
||||
return NSLayoutConstraint.constraintsWithVisualFormat(
|
||||
constraint,
|
||||
options: NSLayoutFormatOptions(0),
|
||||
metrics: nil,
|
||||
metrics: metrics,
|
||||
views: views)
|
||||
}
|
||||
|
||||
|
@ -38,3 +38,11 @@ func setHorzHuggingPri(view: NSView, priority: NSLayoutPriority) {
|
|||
func setVertHuggingPri(view: NSView, priority: NSLayoutPriority) {
|
||||
setHuggingPri(view, priority, NSLayoutConstraintOrientation.Vertical)
|
||||
}
|
||||
|
||||
func fittingAlignmentSize(view: NSView) -> NSSize {
|
||||
var s = view.fittingSize
|
||||
// the fitting size is for a frame rect; we need an alignment rect
|
||||
var r = NSMakeRect(0, 0, s.width, s.height)
|
||||
r = view.alignmentRectForFrame(r)
|
||||
return r.size
|
||||
}
|
||||
|
|
|
@ -50,11 +50,11 @@ nspinbox++
|
|||
"t": self.t,
|
||||
"s": self.s,
|
||||
]
|
||||
var constraints = mkconstraints("H:|[t]-[s]|", views)
|
||||
var constraints = mkconstraints("H:|[t]-[s]|", nil, views)
|
||||
self.addConstraints(constraints)
|
||||
constraints = mkconstraints("V:|[t]|", views)
|
||||
constraints = mkconstraints("V:|[t]|", nil, views)
|
||||
self.addConstraints(constraints)
|
||||
constraints = mkconstraints("V:|[s]|", views)
|
||||
constraints = mkconstraints("V:|[s]|", nil, views)
|
||||
self.addConstraints(constraints)
|
||||
}
|
||||
|
||||
|
|
|
@ -76,11 +76,11 @@ class Window : NSWindow, Control {
|
|||
}
|
||||
|
||||
var constraint = "H:|" + margin + "[view]" + margin + "|"
|
||||
var constraints = mkconstraints(constraint, views)
|
||||
var constraints = mkconstraints(constraint, nil, views)
|
||||
contentView.addConstraints(constraints)
|
||||
|
||||
constraint = "V:|" + margin + "[view]" + margin + "|"
|
||||
constraints = mkconstraints(constraint, views)
|
||||
constraints = mkconstraints(constraint, nil, views)
|
||||
contentView.addConstraints(constraints)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue