/
SoftimageLayout.swift
137 lines (98 loc) · 4.41 KB
/
SoftimageLayout.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
//
// SoftimageLayout.swift
// ShinpuruLayout
//
// Created by Simon Gladman on 04/05/2015.
// Copyright (c) 2015 Simon Gladman. All rights reserved.
//
import UIKit
class SoftimageLayout: UIViewController
{
let mainGroup = SLVGroup()
let verticalToolbarWidth = CGFloat(110)
override func viewDidLoad()
{
super.viewDidLoad()
view.backgroundColor = UIColor.blackColor()
view.addSubview(mainGroup)
mainGroup.children = [createTopToolbar(), createCentreGroup(), createBottomToolbar()]
}
func createCentreGroup() -> SLHGroup
{
let group = SLHGroup()
group.margin = 5
let workSpace = SLImageView()
workSpace.backgroundColor = UIColor.darkGrayColor()
workSpace.image = UIImage(named: "teapot.jpg")
workSpace.contentMode = UIViewContentMode.ScaleAspectFit
group.children = [createLeftToolbar(), workSpace, createRightToolbar()]
return group
}
func createBottomToolbar() -> SLHGroup
{
let toolbar = SLHGroup()
let fixedSpacer = SLSpacer(percentageSize: nil, explicitSize: verticalToolbarWidth)
toolbar.children = [fixedSpacer, UISlider(), fixedSpacer]
toolbar.explicitSize = 30
return toolbar
}
func createLeftToolbar() -> SLVGroup
{
let toolbar = SLVGroup()
toolbar.margin = 3
let variableSpacer = SLSpacer(percentageSize: 100, explicitSize: nil)
toolbar.children = [borderedButton("Get"), borderedButton("Save"), borderedButton("Duplicate"), borderedButton("Delete"), borderedButton("Show"), borderedButton("Info"), borderedButton("Display"), borderedButton("Material"), borderedButton("Texture"), borderedButton("Paint"), variableSpacer, borderedButton("Exit")]
toolbar.explicitSize = verticalToolbarWidth
return toolbar
}
func createRightToolbar() -> SLVGroup
{
let toolbar = SLVGroup()
toolbar.margin = 3
let variableSpacer = SLSpacer(percentageSize: 100, explicitSize: nil)
let fixedSpacer = SLSpacer(percentageSize: nil, explicitSize: 30)
toolbar.children = [borderedButton("Preferences"), borderedButton("Camera"), borderedButton("Light"), fixedSpacer, borderedButton("Scale"), borderedButton("Rotate"), borderedButton("Transform"), variableSpacer, borderedButton("Single"), borderedButton("Multi"), fixedSpacer, borderedButton("Select")]
toolbar.explicitSize = verticalToolbarWidth
return toolbar
}
func createTopToolbar() -> SLHGroup
{
let toolbar = SLHGroup()
let fixedSpacer = SLSpacer(percentageSize: nil, explicitSize: verticalToolbarWidth)
let variableSpacer = SLSpacer(percentageSize: 100, explicitSize: nil)
let labelOne = labelWithText("Shinpuru Layout")
let labelTwo = labelWithText("Model")
let labelThree = labelWithText("Motion")
let labelFour = labelWithText("Actor")
let labelFive = labelWithText("Matter")
toolbar.children = [fixedSpacer, labelOne, variableSpacer, labelTwo, labelThree, labelFour, labelFive, fixedSpacer]
toolbar.explicitSize = 30
return toolbar
}
override func viewDidLayoutSubviews()
{
let top = topLayoutGuide.length
let bottom = bottomLayoutGuide.length
mainGroup.frame = CGRect(x: 0, y: top, width: view.frame.width, height: view.frame.height - top - bottom).rectByInsetting(dx: 5, dy: 0)
}
func borderedButton(text: String) -> SLButton
{
let button = SLButton()
button.setTitle(text, forState: UIControlState.Normal)
button.layer.cornerRadius = 3
button.layer.backgroundColor = UIColor.darkGrayColor().CGColor
button.layer.borderColor = UIColor.lightGrayColor().CGColor
button.layer.borderWidth = 1
button.explicitSize = 30
return button
}
func labelWithText(text: String) -> SLLabel
{
let label = SLLabel()
label.text = text
label.textColor = UIColor.lightGrayColor()
label.percentageSize = nil
label.explicitSize = label.intrinsicContentSize().width + label.layoutMargins.left + label.layoutMargins.right
return label
}
}