7'-ύʔαʔΛͭ͘Δ
struct VFL {
let orientation: Orientation
let firstBound: (Bound, Connection)?
let firstView: View
let views: [(Connection, View)]
var lastView: View {return views.last?.1 ?? firstView}
let lastBound: (Connection, Bound)?
Slide 27
Slide 27 text
7'-ύʔαʔΛͭ͘Δ
enum Orientation {case h, v}
struct View {
let name: String
let predicateListWithParens: [Predicate]
}
enum Bound: String {
case superview = "|"
case layoutMargin = "||"
}
struct Connection {
let predicateList: PredicateList
}
Slide 28
Slide 28 text
7'-ύʔαʔΛͭ͘Δ
enum PredicateList {
case simplePredicate(SimplePredicate)
case predicateListWithParens([Predicate])
}
enum SimplePredicate {
case metricName(MetricName)
case positiveNumber(CGFloat)
}
enum Relation {case eq, le, ge}
enum ObjectOfPredicate {
case constant(Constant)
case viewName(ViewName)
}
Slide 29
Slide 29 text
7'-ύʔαʔΛͭ͘Δ
enum Constant {
case metricName(MetricName)
case number(CGFloat)
}
enum Priority {
case metricName(MetricName)
case number(CGFloat)
}
struct Predicate {
let relation: Relation?
let objectOfPredicate: ObjectOfPredicate
let priority: Priority?
}
}