├── Images
├── 1.png
├── 2.png
├── 3.png
├── 4.png
├── 5.png
├── 6.png
├── 7.png
├── 8.png
├── 9.png
├── 10.png
├── 11.png
├── 12.png
├── 13.png
├── 14.png
├── 15.png
├── 16.png
└── vibrant-w-radius.png
├── .gitignore
├── SwiftNSWindowStyles
├── Assets.xcassets
│ ├── Contents.json
│ ├── Background.imageset
│ │ ├── background.jpg
│ │ └── Contents.json
│ └── AppIcon.appiconset
│ │ └── Contents.json
├── SwiftNSWindowStyles.entitlements
├── ViewController.swift
├── AppDelegate.swift
├── Info.plist
├── WindowController.swift
└── Base.lproj
│ └── Main.storyboard
├── SwiftNSWindowStyles.xcodeproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
└── project.pbxproj
├── SwiftNSWindowStylesTests
├── Info.plist
└── SwiftNSWindowStylesTests.swift
├── SwiftNSWindowStylesUITests
├── Info.plist
└── SwiftNSWindowStylesUITests.swift
├── README.md
└── LICENSE
/Images/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lukakerr/NSWindowStyles/HEAD/Images/1.png
--------------------------------------------------------------------------------
/Images/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lukakerr/NSWindowStyles/HEAD/Images/2.png
--------------------------------------------------------------------------------
/Images/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lukakerr/NSWindowStyles/HEAD/Images/3.png
--------------------------------------------------------------------------------
/Images/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lukakerr/NSWindowStyles/HEAD/Images/4.png
--------------------------------------------------------------------------------
/Images/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lukakerr/NSWindowStyles/HEAD/Images/5.png
--------------------------------------------------------------------------------
/Images/6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lukakerr/NSWindowStyles/HEAD/Images/6.png
--------------------------------------------------------------------------------
/Images/7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lukakerr/NSWindowStyles/HEAD/Images/7.png
--------------------------------------------------------------------------------
/Images/8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lukakerr/NSWindowStyles/HEAD/Images/8.png
--------------------------------------------------------------------------------
/Images/9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lukakerr/NSWindowStyles/HEAD/Images/9.png
--------------------------------------------------------------------------------
/Images/10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lukakerr/NSWindowStyles/HEAD/Images/10.png
--------------------------------------------------------------------------------
/Images/11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lukakerr/NSWindowStyles/HEAD/Images/11.png
--------------------------------------------------------------------------------
/Images/12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lukakerr/NSWindowStyles/HEAD/Images/12.png
--------------------------------------------------------------------------------
/Images/13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lukakerr/NSWindowStyles/HEAD/Images/13.png
--------------------------------------------------------------------------------
/Images/14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lukakerr/NSWindowStyles/HEAD/Images/14.png
--------------------------------------------------------------------------------
/Images/15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lukakerr/NSWindowStyles/HEAD/Images/15.png
--------------------------------------------------------------------------------
/Images/16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lukakerr/NSWindowStyles/HEAD/Images/16.png
--------------------------------------------------------------------------------
/Images/vibrant-w-radius.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lukakerr/NSWindowStyles/HEAD/Images/vibrant-w-radius.png
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | SwiftNSWindowStyles.xcodeproj/xcuserdata
2 | SwiftNSWindowStyles.xcodeproj/project.xcworkspace/xcuserdata
--------------------------------------------------------------------------------
/SwiftNSWindowStyles/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/SwiftNSWindowStyles/Assets.xcassets/Background.imageset/background.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lukakerr/NSWindowStyles/HEAD/SwiftNSWindowStyles/Assets.xcassets/Background.imageset/background.jpg
--------------------------------------------------------------------------------
/SwiftNSWindowStyles.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/SwiftNSWindowStyles.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/SwiftNSWindowStyles.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildSystemType
6 | Latest
7 |
8 |
9 |
--------------------------------------------------------------------------------
/SwiftNSWindowStyles/Assets.xcassets/Background.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "mac",
5 | "filename" : "background.jpg",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "mac",
10 | "scale" : "2x"
11 | }
12 | ],
13 | "info" : {
14 | "version" : 1,
15 | "author" : "xcode"
16 | }
17 | }
--------------------------------------------------------------------------------
/SwiftNSWindowStyles/SwiftNSWindowStyles.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.files.user-selected.read-only
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/SwiftNSWindowStyles/ViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // SwiftNSWindowStyles
4 | //
5 | // Created by Luka Kerr on 4/3/18.
6 | // Copyright © 2018 Luka Kerr. All rights reserved.
7 | //
8 |
9 | import Cocoa
10 |
11 | class ViewController: NSViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 | // Do any additional setup after loading the view.
16 | }
17 |
18 | override var representedObject: Any? {
19 | didSet {
20 | // Update the view, if already loaded.
21 | }
22 | }
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/SwiftNSWindowStyles/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // SwiftNSWindowStyles
4 | //
5 | // Created by Luka Kerr on 4/3/18.
6 | // Copyright © 2018 Luka Kerr. All rights reserved.
7 | //
8 |
9 | import Cocoa
10 |
11 | @NSApplicationMain
12 | class AppDelegate: NSObject, NSApplicationDelegate {
13 |
14 | func applicationDidFinishLaunching(_ aNotification: Notification) {
15 | // Insert code here to initialize your application
16 | }
17 |
18 | func applicationWillTerminate(_ aNotification: Notification) {
19 | // Insert code here to tear down your application
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/SwiftNSWindowStylesTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/SwiftNSWindowStylesUITests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/SwiftNSWindowStyles/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleVersion
22 | 1
23 | LSMinimumSystemVersion
24 | $(MACOSX_DEPLOYMENT_TARGET)
25 | NSHumanReadableCopyright
26 | Copyright © 2018 Luka Kerr. All rights reserved.
27 | NSMainStoryboardFile
28 | Main
29 | NSPrincipalClass
30 | NSApplication
31 |
32 |
33 |
--------------------------------------------------------------------------------
/SwiftNSWindowStylesTests/SwiftNSWindowStylesTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SwiftNSWindowStylesTests.swift
3 | // SwiftNSWindowStylesTests
4 | //
5 | // Created by Luka Kerr on 4/3/18.
6 | // Copyright © 2018 Luka Kerr. All rights reserved.
7 | //
8 |
9 | import XCTest
10 | @testable import SwiftNSWindowStyles
11 |
12 | class SwiftNSWindowStylesTests: XCTestCase {
13 |
14 | override func setUp() {
15 | super.setUp()
16 | // Put setup code here. This method is called before the invocation of each test method in the class.
17 | }
18 |
19 | override func tearDown() {
20 | // Put teardown code here. This method is called after the invocation of each test method in the class.
21 | super.tearDown()
22 | }
23 |
24 | func testExample() {
25 | // This is an example of a functional test case.
26 | // Use XCTAssert and related functions to verify your tests produce the correct results.
27 | }
28 |
29 | func testPerformanceExample() {
30 | // This is an example of a performance test case.
31 | self.measure {
32 | // Put the code you want to measure the time of here.
33 | }
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/SwiftNSWindowStyles/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "mac",
5 | "size" : "16x16",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "mac",
10 | "size" : "16x16",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "mac",
15 | "size" : "32x32",
16 | "scale" : "1x"
17 | },
18 | {
19 | "idiom" : "mac",
20 | "size" : "32x32",
21 | "scale" : "2x"
22 | },
23 | {
24 | "idiom" : "mac",
25 | "size" : "128x128",
26 | "scale" : "1x"
27 | },
28 | {
29 | "idiom" : "mac",
30 | "size" : "128x128",
31 | "scale" : "2x"
32 | },
33 | {
34 | "idiom" : "mac",
35 | "size" : "256x256",
36 | "scale" : "1x"
37 | },
38 | {
39 | "idiom" : "mac",
40 | "size" : "256x256",
41 | "scale" : "2x"
42 | },
43 | {
44 | "idiom" : "mac",
45 | "size" : "512x512",
46 | "scale" : "1x"
47 | },
48 | {
49 | "idiom" : "mac",
50 | "size" : "512x512",
51 | "scale" : "2x"
52 | }
53 | ],
54 | "info" : {
55 | "version" : 1,
56 | "author" : "xcode"
57 | }
58 | }
--------------------------------------------------------------------------------
/SwiftNSWindowStylesUITests/SwiftNSWindowStylesUITests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SwiftNSWindowStylesUITests.swift
3 | // SwiftNSWindowStylesUITests
4 | //
5 | // Created by Luka Kerr on 4/3/18.
6 | // Copyright © 2018 Luka Kerr. All rights reserved.
7 | //
8 |
9 | import XCTest
10 |
11 | class SwiftNSWindowStylesUITests: XCTestCase {
12 |
13 | override func setUp() {
14 | super.setUp()
15 |
16 | // Put setup code here. This method is called before the invocation of each test method in the class.
17 |
18 | // In UI tests it is usually best to stop immediately when a failure occurs.
19 | continueAfterFailure = false
20 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.
21 | XCUIApplication().launch()
22 |
23 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
24 | }
25 |
26 | override func tearDown() {
27 | // Put teardown code here. This method is called after the invocation of each test method in the class.
28 | super.tearDown()
29 | }
30 |
31 | func testExample() {
32 | // Use recording to get started writing UI tests.
33 | // Use XCTAssert and related functions to verify your tests produce the correct results.
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/SwiftNSWindowStyles/WindowController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // WindowController.swift
3 | // SwiftNSWindowStyles
4 | //
5 | // Created by Luka Kerr on 4/3/18.
6 | // Copyright © 2018 Luka Kerr. All rights reserved.
7 | //
8 |
9 | import Cocoa
10 |
11 | class WindowController: NSWindowController {
12 |
13 | override func windowDidLoad() {
14 | super.windowDidLoad()
15 |
16 | // 1
17 | // window?.titleVisibility = .hidden
18 | //
19 | // 2
20 | // window?.styleMask.remove(.titled)
21 | //
22 | // 3
23 | // let visualEffect = NSVisualEffectView()
24 | // visualEffect.blendingMode = .behindWindow
25 | // visualEffect.state = .active
26 | // visualEffect.material = .dark
27 | // window?.contentView = visualEffect
28 | //
29 | // 4
30 | // let visualEffect = NSVisualEffectView()
31 | // visualEffect.blendingMode = .behindWindow
32 | // visualEffect.state = .active
33 | // visualEffect.material = .dark
34 | // window?.contentView = visualEffect
35 | //
36 | // window?.titlebarAppearsTransparent = true
37 | // window?.styleMask.insert(.fullSizeContentView)
38 | //
39 | // 5
40 | // let visualEffect = NSVisualEffectView()
41 | // visualEffect.blendingMode = .behindWindow
42 | // visualEffect.state = .active
43 | // visualEffect.material = .dark
44 | // window?.contentView = visualEffect
45 | //
46 | // window?.styleMask.remove(.titled)
47 | // window?.isMovableByWindowBackground = true
48 | //
49 | // 6
50 | // let visualEffect = NSVisualEffectView()
51 | // visualEffect.translatesAutoresizingMaskIntoConstraints = false
52 | // visualEffect.material = .dark
53 | // visualEffect.state = .active
54 | // visualEffect.wantsLayer = true
55 | // visualEffect.layer?.cornerRadius = 16.0
56 | //
57 | // window?.titleVisibility = .hidden
58 | // window?.styleMask.remove(.titled)
59 | // window?.backgroundColor = .clear
60 | // window?.isMovableByWindowBackground = true
61 | //
62 | // window?.contentView?.addSubview(visualEffect)
63 | //
64 | // guard let constraints = window?.contentView else {
65 | // return
66 | // }
67 | //
68 | // visualEffect.leadingAnchor.constraint(equalTo: constraints.leadingAnchor).isActive = true
69 | // visualEffect.trailingAnchor.constraint(equalTo: constraints.trailingAnchor).isActive = true
70 | // visualEffect.topAnchor.constraint(equalTo: constraints.topAnchor).isActive = true
71 | // visualEffect.bottomAnchor.constraint(equalTo: constraints.bottomAnchor).isActive = true
72 | //
73 | // 7
74 | // window?.titlebarAppearsTransparent = true
75 | //
76 | // 8
77 | // window?.titlebarAppearsTransparent = true
78 | // window?.backgroundColor = .red
79 |
80 | // 9
81 | // let customToolbar = NSToolbar()
82 | // window?.titleVisibility = .hidden
83 | // window?.toolbar = customToolbar
84 | //
85 | // 10
86 | // let customToolbar = NSToolbar()
87 | // window?.titlebarAppearsTransparent = true
88 | // window?.titleVisibility = .hidden
89 | // window?.toolbar = customToolbar
90 | //
91 | // 11
92 | // let customToolbar = NSToolbar()
93 | // customToolbar.showsBaselineSeparator = false
94 | // window?.titlebarAppearsTransparent = true
95 | // window?.titleVisibility = .hidden
96 | // window?.toolbar = customToolbar
97 | //
98 | // 12
99 | // let customToolbar = NSToolbar()
100 | // customToolbar.showsBaselineSeparator = false
101 | // window?.titlebarAppearsTransparent = true
102 | // window?.titleVisibility = .hidden
103 | // window?.backgroundColor = .red
104 | // window?.toolbar = customToolbar
105 | //
106 | // 13
107 | // let customToolbar = NSToolbar()
108 | // window?.titleVisibility = .hidden
109 | // window?.styleMask.insert(.fullSizeContentView)
110 | // window?.contentView?.wantsLayer = true
111 | // window?.contentView?.layer?.contents = NSImage(named: NSImage.Name("Background"))
112 | // window?.toolbar = customToolbar
113 | //
114 | // 14
115 | // window?.titleVisibility = .hidden
116 | // window?.styleMask.insert(.fullSizeContentView)
117 | // window?.contentView?.wantsLayer = true
118 | // window?.contentView?.layer?.contents = NSImage(named: NSImage.Name("Background"))
119 | //
120 | // 15
121 | // window?.titleVisibility = .hidden
122 | // window?.styleMask.insert(.fullSizeContentView)
123 | // window?.titlebarAppearsTransparent = true
124 | // window?.contentView?.wantsLayer = true
125 | // window?.contentView?.layer?.contents = NSImage(named: NSImage.Name("Background"))
126 | //
127 | // 16
128 | // if #available(OSX 10.14, *) {
129 | // window?.appearance = NSAppearance(named: .darkAqua)
130 | // }
131 | }
132 |
133 | }
134 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Swift NSWindow Style Showcase
2 |
3 | [](https://github.com/apple/swift)
4 | [](https://developer.apple.com/macos/)
5 | [](https://github.com/lukakerr)
6 |
7 | A showcase of many of the different styles of windows possible with NSWindow on MacOS. In some examples, NSToolbar, and NSVisualEffectView are used. No private API's are used.
8 |
9 | To test each style, clone the project, open it in Xcode, uncomment each block of code in `WindowController.swift` and run. The numbers above each block correspond to each style below.
10 |
11 | All code is in `WindowController.swift` in the `windowDidLoad` function. You should just be able to place each block inside that function to get the exact same result.
12 |
13 | If you have a style to add, please make a pull request.
14 |
15 | ### 1. Hide title
16 |
17 | Don't show the title text in the titlebar.
18 |
19 |
20 |
21 |
22 |
23 | ```swift
24 | window?.titleVisibility = .hidden
25 | ```
26 |
27 | ### 2. Hide titlebar
28 |
29 | Hide the titlebar completely.
30 |
31 |
32 |
33 |
34 |
35 | ```swift
36 | window?.styleMask.remove(.titled)
37 | ```
38 |
39 | ### 3. Vibrant background
40 |
41 | Create a vibrant background where whatever is behind the window can be slightly seen. This uses `NSVisualEffectView`.
42 |
43 |
44 |
45 |
46 |
47 | ```swift
48 | let visualEffect = NSVisualEffectView()
49 | visualEffect.blendingMode = .behindWindow
50 | visualEffect.state = .active
51 | visualEffect.material = .dark
52 | window?.contentView = visualEffect
53 | ```
54 |
55 | `visualEffect.material` can take multiple values including:
56 |
57 | - `.appearanceBased`: based on the views appearance
58 | - `.dark`: dark appearance
59 | - `.ultraDark`: ultra dark appearance
60 | - `.light`: light appearance
61 | - `.mediumLight`: medium light appearance
62 | - others such as `.menu`, `.popover`, `.selection`, `.sidebar` and `.titlebar`
63 |
64 | ### 4. Vibrant background with transparent titlebar
65 |
66 | Same as above, with a transparent titlebar.
67 |
68 |
69 |
70 |
71 |
72 | ```swift
73 | let visualEffect = NSVisualEffectView()
74 | visualEffect.blendingMode = .behindWindow
75 | visualEffect.state = .active
76 | visualEffect.material = .dark
77 | window?.contentView = visualEffect
78 |
79 | window?.titlebarAppearsTransparent = true
80 | window?.styleMask.insert(.fullSizeContentView)
81 | ```
82 |
83 | ### 5. Vibrant background without titlebar
84 |
85 | Same as above, without the titlebar.
86 |
87 |
88 |
89 |
90 |
91 | ```swift
92 | let visualEffect = NSVisualEffectView()
93 | visualEffect.blendingMode = .behindWindow
94 | visualEffect.state = .active
95 | visualEffect.material = .dark
96 | window?.contentView = visualEffect
97 |
98 | window?.styleMask.remove(.titled)
99 | window?.isMovableByWindowBackground = true
100 | ```
101 |
102 | ### 6. Vibrant background with custom border radius and no titlebar
103 |
104 | A vibrant window with a custom border radius. The border radius value can be changed at `visualEffect.layer?.cornerRadius = 16.0`.
105 |
106 |
107 |
108 |
109 |
110 | ```swift
111 | let visualEffect = NSVisualEffectView()
112 | visualEffect.translatesAutoresizingMaskIntoConstraints = false
113 | visualEffect.material = .dark
114 | visualEffect.state = .active
115 | visualEffect.wantsLayer = true
116 | visualEffect.layer?.cornerRadius = 16.0
117 |
118 | window?.titleVisibility = .hidden
119 | window?.styleMask.remove(.titled)
120 | window?.backgroundColor = .clear
121 | window?.isMovableByWindowBackground = true
122 |
123 | window?.contentView?.addSubview(visualEffect)
124 |
125 | guard let constraints = window?.contentView else {
126 | return
127 | }
128 |
129 | visualEffect.leadingAnchor.constraint(equalTo: constraints.leadingAnchor).isActive = true
130 | visualEffect.trailingAnchor.constraint(equalTo: constraints.trailingAnchor).isActive = true
131 | visualEffect.topAnchor.constraint(equalTo: constraints.topAnchor).isActive = true
132 | visualEffect.bottomAnchor.constraint(equalTo: constraints.bottomAnchor).isActive = true
133 | ```
134 |
135 | ### 7. Vibrant background with transparent titlebar and no window controls
136 |
137 | A vibrant window with a standard border radius and no window controls or title.
138 |
139 |
140 |
141 |
142 |
143 | ```swift
144 | let visualEffect = NSVisualEffectView()
145 | visualEffect.blendingMode = .behindWindow
146 | visualEffect.state = .active
147 | visualEffect.material = .dark
148 | window?.contentView = visualEffect
149 |
150 | window?.styleMask.insert(.titled)
151 |
152 | window?.titlebarAppearsTransparent = true
153 | window?.titleVisibility = .hidden
154 |
155 | window?.standardWindowButton(.miniaturizeButton)?.isHidden = true
156 | window?.standardWindowButton(.closeButton)?.isHidden = true
157 | window?.standardWindowButton(.zoomButton)?.isHidden = true
158 |
159 | window?.isMovableByWindowBackground = true
160 | ```
161 |
162 |
163 | ### 8. Transparent titlebar
164 |
165 | A window with a transparent titlebar.
166 |
167 |
168 |
169 |
170 |
171 | ```swift
172 | window?.titlebarAppearsTransparent = true
173 | ```
174 |
175 | ### 9. Transparent titlebar with background color
176 |
177 | Same as above with a background color.
178 |
179 |
180 |
181 |
182 |
183 | ```swift
184 | window?.titlebarAppearsTransparent = true
185 | window?.backgroundColor = .red
186 | ```
187 |
188 | ### 10. Toolbar
189 |
190 | A window with a toolbar.
191 |
192 |
193 |
194 |
195 |
196 | ```swift
197 | let customToolbar = NSToolbar()
198 | window?.titleVisibility = .hidden
199 | window?.toolbar = customToolbar
200 | ```
201 |
202 | ### 11. Transparent toolbar
203 |
204 | Same as above, with the toolbar transparent.
205 |
206 |
207 |
208 |
209 |
210 | ```swift
211 | let customToolbar = NSToolbar()
212 | window?.titlebarAppearsTransparent = true
213 | window?.titleVisibility = .hidden
214 | window?.toolbar = customToolbar
215 | ```
216 |
217 | ### 12. Transparent toolbar without seperator
218 |
219 | Same as above, without the toolbar seperator.
220 |
221 |
222 |
223 |
224 |
225 | ```swift
226 | let customToolbar = NSToolbar()
227 | customToolbar.showsBaselineSeparator = false
228 | window?.titlebarAppearsTransparent = true
229 | window?.titleVisibility = .hidden
230 | window?.toolbar = customToolbar
231 | ```
232 |
233 | ### 13. Transparent toolbar with background color and without seperator
234 |
235 | Same as above, with a background color.
236 |
237 |
238 |
239 |
240 |
241 | ```swift
242 | let customToolbar = NSToolbar()
243 | customToolbar.showsBaselineSeparator = false
244 | window?.titlebarAppearsTransparent = true
245 | window?.titleVisibility = .hidden
246 | window?.backgroundColor = .red
247 | window?.toolbar = customToolbar
248 | ```
249 |
250 | ### 14. Translucent toolbar
251 |
252 | A translucent toolbar allowing for content behind the toolbar to be slightly seen.
253 |
254 |
255 |
256 |
257 |
258 | ```swift
259 | let customToolbar = NSToolbar()
260 | window?.titleVisibility = .hidden
261 | window?.styleMask.insert(.fullSizeContentView)
262 | window?.contentView?.wantsLayer = true
263 | window?.contentView?.layer?.contents = NSImage(named: NSImage.Name("Background"))
264 | window?.toolbar = customToolbar
265 | ```
266 |
267 | ### 15. Translucent titlebar
268 |
269 | Same as above with a titlebar instead of a toolbar.
270 |
271 |
272 |
273 |
274 |
275 | ```swift
276 | window?.titleVisibility = .hidden
277 | window?.styleMask.insert(.fullSizeContentView)
278 | window?.contentView?.wantsLayer = true
279 | window?.contentView?.layer?.contents = NSImage(named: NSImage.Name("Background"))
280 | ```
281 |
282 | ### 16. Transparent titlebar without title
283 |
284 | Same as above with a transparent titlebar.
285 |
286 |
287 |
288 |
289 |
290 | ```swift
291 | window?.titleVisibility = .hidden
292 | window?.styleMask.insert(.fullSizeContentView)
293 | window?.titlebarAppearsTransparent = true
294 | window?.contentView?.wantsLayer = true
295 | window?.contentView?.layer?.contents = NSImage(named: NSImage.Name("Background"))
296 | ```
297 |
298 | ### 17. macOS Mojave dark mode
299 |
300 | The macOS Mojave dark mode appearance.
301 |
302 |
303 |
304 |
305 |
306 | ```swift
307 | if #available(OSX 10.14, *) {
308 | window?.appearance = NSAppearance(named: .darkAqua)
309 | }
310 | ```
311 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "{}"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright {yyyy} {name of copyright owner}
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/SwiftNSWindowStyles.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 48;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | A137F1BB204B76A2003B43E3 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A137F1BA204B76A2003B43E3 /* AppDelegate.swift */; };
11 | A137F1BD204B76A2003B43E3 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A137F1BC204B76A2003B43E3 /* ViewController.swift */; };
12 | A137F1BF204B76A2003B43E3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A137F1BE204B76A2003B43E3 /* Assets.xcassets */; };
13 | A137F1C2204B76A2003B43E3 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A137F1C0204B76A2003B43E3 /* Main.storyboard */; };
14 | A137F1CE204B76A2003B43E3 /* SwiftNSWindowStylesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A137F1CD204B76A2003B43E3 /* SwiftNSWindowStylesTests.swift */; };
15 | A137F1D9204B76A2003B43E3 /* SwiftNSWindowStylesUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A137F1D8204B76A2003B43E3 /* SwiftNSWindowStylesUITests.swift */; };
16 | A137F1E7204B7E8E003B43E3 /* WindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A137F1E6204B7E8E003B43E3 /* WindowController.swift */; };
17 | A187F2402190FB180020B308 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = A187F23F2190FB180020B308 /* README.md */; };
18 | /* End PBXBuildFile section */
19 |
20 | /* Begin PBXContainerItemProxy section */
21 | A137F1CA204B76A2003B43E3 /* PBXContainerItemProxy */ = {
22 | isa = PBXContainerItemProxy;
23 | containerPortal = A137F1AF204B76A2003B43E3 /* Project object */;
24 | proxyType = 1;
25 | remoteGlobalIDString = A137F1B6204B76A2003B43E3;
26 | remoteInfo = SwiftNSWindowStyles;
27 | };
28 | A137F1D5204B76A2003B43E3 /* PBXContainerItemProxy */ = {
29 | isa = PBXContainerItemProxy;
30 | containerPortal = A137F1AF204B76A2003B43E3 /* Project object */;
31 | proxyType = 1;
32 | remoteGlobalIDString = A137F1B6204B76A2003B43E3;
33 | remoteInfo = SwiftNSWindowStyles;
34 | };
35 | /* End PBXContainerItemProxy section */
36 |
37 | /* Begin PBXFileReference section */
38 | A137F1B7204B76A2003B43E3 /* SwiftNSWindowStyles.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwiftNSWindowStyles.app; sourceTree = BUILT_PRODUCTS_DIR; };
39 | A137F1BA204B76A2003B43E3 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
40 | A137F1BC204B76A2003B43E3 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
41 | A137F1BE204B76A2003B43E3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
42 | A137F1C1204B76A2003B43E3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
43 | A137F1C3204B76A2003B43E3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
44 | A137F1C4204B76A2003B43E3 /* SwiftNSWindowStyles.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = SwiftNSWindowStyles.entitlements; sourceTree = ""; };
45 | A137F1C9204B76A2003B43E3 /* SwiftNSWindowStylesTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwiftNSWindowStylesTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
46 | A137F1CD204B76A2003B43E3 /* SwiftNSWindowStylesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftNSWindowStylesTests.swift; sourceTree = ""; };
47 | A137F1CF204B76A2003B43E3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
48 | A137F1D4204B76A2003B43E3 /* SwiftNSWindowStylesUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwiftNSWindowStylesUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
49 | A137F1D8204B76A2003B43E3 /* SwiftNSWindowStylesUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftNSWindowStylesUITests.swift; sourceTree = ""; };
50 | A137F1DA204B76A2003B43E3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
51 | A137F1E6204B7E8E003B43E3 /* WindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WindowController.swift; sourceTree = ""; };
52 | A187F23F2190FB180020B308 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = SOURCE_ROOT; };
53 | /* End PBXFileReference section */
54 |
55 | /* Begin PBXFrameworksBuildPhase section */
56 | A137F1B4204B76A2003B43E3 /* Frameworks */ = {
57 | isa = PBXFrameworksBuildPhase;
58 | buildActionMask = 2147483647;
59 | files = (
60 | );
61 | runOnlyForDeploymentPostprocessing = 0;
62 | };
63 | A137F1C6204B76A2003B43E3 /* Frameworks */ = {
64 | isa = PBXFrameworksBuildPhase;
65 | buildActionMask = 2147483647;
66 | files = (
67 | );
68 | runOnlyForDeploymentPostprocessing = 0;
69 | };
70 | A137F1D1204B76A2003B43E3 /* Frameworks */ = {
71 | isa = PBXFrameworksBuildPhase;
72 | buildActionMask = 2147483647;
73 | files = (
74 | );
75 | runOnlyForDeploymentPostprocessing = 0;
76 | };
77 | /* End PBXFrameworksBuildPhase section */
78 |
79 | /* Begin PBXGroup section */
80 | A137F1AE204B76A2003B43E3 = {
81 | isa = PBXGroup;
82 | children = (
83 | A137F1B9204B76A2003B43E3 /* SwiftNSWindowStyles */,
84 | A137F1CC204B76A2003B43E3 /* SwiftNSWindowStylesTests */,
85 | A137F1D7204B76A2003B43E3 /* SwiftNSWindowStylesUITests */,
86 | A137F1B8204B76A2003B43E3 /* Products */,
87 | );
88 | sourceTree = "";
89 | };
90 | A137F1B8204B76A2003B43E3 /* Products */ = {
91 | isa = PBXGroup;
92 | children = (
93 | A137F1B7204B76A2003B43E3 /* SwiftNSWindowStyles.app */,
94 | A137F1C9204B76A2003B43E3 /* SwiftNSWindowStylesTests.xctest */,
95 | A137F1D4204B76A2003B43E3 /* SwiftNSWindowStylesUITests.xctest */,
96 | );
97 | name = Products;
98 | sourceTree = "";
99 | };
100 | A137F1B9204B76A2003B43E3 /* SwiftNSWindowStyles */ = {
101 | isa = PBXGroup;
102 | children = (
103 | A137F1BA204B76A2003B43E3 /* AppDelegate.swift */,
104 | A137F1BC204B76A2003B43E3 /* ViewController.swift */,
105 | A137F1BE204B76A2003B43E3 /* Assets.xcassets */,
106 | A137F1C0204B76A2003B43E3 /* Main.storyboard */,
107 | A137F1E6204B7E8E003B43E3 /* WindowController.swift */,
108 | A187F23F2190FB180020B308 /* README.md */,
109 | A137F1C3204B76A2003B43E3 /* Info.plist */,
110 | A137F1C4204B76A2003B43E3 /* SwiftNSWindowStyles.entitlements */,
111 | );
112 | path = SwiftNSWindowStyles;
113 | sourceTree = "";
114 | };
115 | A137F1CC204B76A2003B43E3 /* SwiftNSWindowStylesTests */ = {
116 | isa = PBXGroup;
117 | children = (
118 | A137F1CD204B76A2003B43E3 /* SwiftNSWindowStylesTests.swift */,
119 | A137F1CF204B76A2003B43E3 /* Info.plist */,
120 | );
121 | path = SwiftNSWindowStylesTests;
122 | sourceTree = "";
123 | };
124 | A137F1D7204B76A2003B43E3 /* SwiftNSWindowStylesUITests */ = {
125 | isa = PBXGroup;
126 | children = (
127 | A137F1D8204B76A2003B43E3 /* SwiftNSWindowStylesUITests.swift */,
128 | A137F1DA204B76A2003B43E3 /* Info.plist */,
129 | );
130 | path = SwiftNSWindowStylesUITests;
131 | sourceTree = "";
132 | };
133 | /* End PBXGroup section */
134 |
135 | /* Begin PBXNativeTarget section */
136 | A137F1B6204B76A2003B43E3 /* SwiftNSWindowStyles */ = {
137 | isa = PBXNativeTarget;
138 | buildConfigurationList = A137F1DD204B76A2003B43E3 /* Build configuration list for PBXNativeTarget "SwiftNSWindowStyles" */;
139 | buildPhases = (
140 | A137F1B3204B76A2003B43E3 /* Sources */,
141 | A137F1B4204B76A2003B43E3 /* Frameworks */,
142 | A137F1B5204B76A2003B43E3 /* Resources */,
143 | );
144 | buildRules = (
145 | );
146 | dependencies = (
147 | );
148 | name = SwiftNSWindowStyles;
149 | productName = SwiftNSWindowStyles;
150 | productReference = A137F1B7204B76A2003B43E3 /* SwiftNSWindowStyles.app */;
151 | productType = "com.apple.product-type.application";
152 | };
153 | A137F1C8204B76A2003B43E3 /* SwiftNSWindowStylesTests */ = {
154 | isa = PBXNativeTarget;
155 | buildConfigurationList = A137F1E0204B76A2003B43E3 /* Build configuration list for PBXNativeTarget "SwiftNSWindowStylesTests" */;
156 | buildPhases = (
157 | A137F1C5204B76A2003B43E3 /* Sources */,
158 | A137F1C6204B76A2003B43E3 /* Frameworks */,
159 | A137F1C7204B76A2003B43E3 /* Resources */,
160 | );
161 | buildRules = (
162 | );
163 | dependencies = (
164 | A137F1CB204B76A2003B43E3 /* PBXTargetDependency */,
165 | );
166 | name = SwiftNSWindowStylesTests;
167 | productName = SwiftNSWindowStylesTests;
168 | productReference = A137F1C9204B76A2003B43E3 /* SwiftNSWindowStylesTests.xctest */;
169 | productType = "com.apple.product-type.bundle.unit-test";
170 | };
171 | A137F1D3204B76A2003B43E3 /* SwiftNSWindowStylesUITests */ = {
172 | isa = PBXNativeTarget;
173 | buildConfigurationList = A137F1E3204B76A2003B43E3 /* Build configuration list for PBXNativeTarget "SwiftNSWindowStylesUITests" */;
174 | buildPhases = (
175 | A137F1D0204B76A2003B43E3 /* Sources */,
176 | A137F1D1204B76A2003B43E3 /* Frameworks */,
177 | A137F1D2204B76A2003B43E3 /* Resources */,
178 | );
179 | buildRules = (
180 | );
181 | dependencies = (
182 | A137F1D6204B76A2003B43E3 /* PBXTargetDependency */,
183 | );
184 | name = SwiftNSWindowStylesUITests;
185 | productName = SwiftNSWindowStylesUITests;
186 | productReference = A137F1D4204B76A2003B43E3 /* SwiftNSWindowStylesUITests.xctest */;
187 | productType = "com.apple.product-type.bundle.ui-testing";
188 | };
189 | /* End PBXNativeTarget section */
190 |
191 | /* Begin PBXProject section */
192 | A137F1AF204B76A2003B43E3 /* Project object */ = {
193 | isa = PBXProject;
194 | attributes = {
195 | LastSwiftUpdateCheck = 0920;
196 | LastUpgradeCheck = 1010;
197 | ORGANIZATIONNAME = "Luka Kerr";
198 | TargetAttributes = {
199 | A137F1B6204B76A2003B43E3 = {
200 | CreatedOnToolsVersion = 9.2;
201 | LastSwiftMigration = 1020;
202 | ProvisioningStyle = Automatic;
203 | };
204 | A137F1C8204B76A2003B43E3 = {
205 | CreatedOnToolsVersion = 9.2;
206 | LastSwiftMigration = 1020;
207 | ProvisioningStyle = Automatic;
208 | TestTargetID = A137F1B6204B76A2003B43E3;
209 | };
210 | A137F1D3204B76A2003B43E3 = {
211 | CreatedOnToolsVersion = 9.2;
212 | LastSwiftMigration = 1020;
213 | ProvisioningStyle = Automatic;
214 | TestTargetID = A137F1B6204B76A2003B43E3;
215 | };
216 | };
217 | };
218 | buildConfigurationList = A137F1B2204B76A2003B43E3 /* Build configuration list for PBXProject "SwiftNSWindowStyles" */;
219 | compatibilityVersion = "Xcode 8.0";
220 | developmentRegion = en;
221 | hasScannedForEncodings = 0;
222 | knownRegions = (
223 | en,
224 | Base,
225 | );
226 | mainGroup = A137F1AE204B76A2003B43E3;
227 | productRefGroup = A137F1B8204B76A2003B43E3 /* Products */;
228 | projectDirPath = "";
229 | projectRoot = "";
230 | targets = (
231 | A137F1B6204B76A2003B43E3 /* SwiftNSWindowStyles */,
232 | A137F1C8204B76A2003B43E3 /* SwiftNSWindowStylesTests */,
233 | A137F1D3204B76A2003B43E3 /* SwiftNSWindowStylesUITests */,
234 | );
235 | };
236 | /* End PBXProject section */
237 |
238 | /* Begin PBXResourcesBuildPhase section */
239 | A137F1B5204B76A2003B43E3 /* Resources */ = {
240 | isa = PBXResourcesBuildPhase;
241 | buildActionMask = 2147483647;
242 | files = (
243 | A187F2402190FB180020B308 /* README.md in Resources */,
244 | A137F1BF204B76A2003B43E3 /* Assets.xcassets in Resources */,
245 | A137F1C2204B76A2003B43E3 /* Main.storyboard in Resources */,
246 | );
247 | runOnlyForDeploymentPostprocessing = 0;
248 | };
249 | A137F1C7204B76A2003B43E3 /* Resources */ = {
250 | isa = PBXResourcesBuildPhase;
251 | buildActionMask = 2147483647;
252 | files = (
253 | );
254 | runOnlyForDeploymentPostprocessing = 0;
255 | };
256 | A137F1D2204B76A2003B43E3 /* Resources */ = {
257 | isa = PBXResourcesBuildPhase;
258 | buildActionMask = 2147483647;
259 | files = (
260 | );
261 | runOnlyForDeploymentPostprocessing = 0;
262 | };
263 | /* End PBXResourcesBuildPhase section */
264 |
265 | /* Begin PBXSourcesBuildPhase section */
266 | A137F1B3204B76A2003B43E3 /* Sources */ = {
267 | isa = PBXSourcesBuildPhase;
268 | buildActionMask = 2147483647;
269 | files = (
270 | A137F1BD204B76A2003B43E3 /* ViewController.swift in Sources */,
271 | A137F1E7204B7E8E003B43E3 /* WindowController.swift in Sources */,
272 | A137F1BB204B76A2003B43E3 /* AppDelegate.swift in Sources */,
273 | );
274 | runOnlyForDeploymentPostprocessing = 0;
275 | };
276 | A137F1C5204B76A2003B43E3 /* Sources */ = {
277 | isa = PBXSourcesBuildPhase;
278 | buildActionMask = 2147483647;
279 | files = (
280 | A137F1CE204B76A2003B43E3 /* SwiftNSWindowStylesTests.swift in Sources */,
281 | );
282 | runOnlyForDeploymentPostprocessing = 0;
283 | };
284 | A137F1D0204B76A2003B43E3 /* Sources */ = {
285 | isa = PBXSourcesBuildPhase;
286 | buildActionMask = 2147483647;
287 | files = (
288 | A137F1D9204B76A2003B43E3 /* SwiftNSWindowStylesUITests.swift in Sources */,
289 | );
290 | runOnlyForDeploymentPostprocessing = 0;
291 | };
292 | /* End PBXSourcesBuildPhase section */
293 |
294 | /* Begin PBXTargetDependency section */
295 | A137F1CB204B76A2003B43E3 /* PBXTargetDependency */ = {
296 | isa = PBXTargetDependency;
297 | target = A137F1B6204B76A2003B43E3 /* SwiftNSWindowStyles */;
298 | targetProxy = A137F1CA204B76A2003B43E3 /* PBXContainerItemProxy */;
299 | };
300 | A137F1D6204B76A2003B43E3 /* PBXTargetDependency */ = {
301 | isa = PBXTargetDependency;
302 | target = A137F1B6204B76A2003B43E3 /* SwiftNSWindowStyles */;
303 | targetProxy = A137F1D5204B76A2003B43E3 /* PBXContainerItemProxy */;
304 | };
305 | /* End PBXTargetDependency section */
306 |
307 | /* Begin PBXVariantGroup section */
308 | A137F1C0204B76A2003B43E3 /* Main.storyboard */ = {
309 | isa = PBXVariantGroup;
310 | children = (
311 | A137F1C1204B76A2003B43E3 /* Base */,
312 | );
313 | name = Main.storyboard;
314 | sourceTree = "";
315 | };
316 | /* End PBXVariantGroup section */
317 |
318 | /* Begin XCBuildConfiguration section */
319 | A137F1DB204B76A2003B43E3 /* Debug */ = {
320 | isa = XCBuildConfiguration;
321 | buildSettings = {
322 | ALWAYS_SEARCH_USER_PATHS = NO;
323 | CLANG_ANALYZER_NONNULL = YES;
324 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
325 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
326 | CLANG_CXX_LIBRARY = "libc++";
327 | CLANG_ENABLE_MODULES = YES;
328 | CLANG_ENABLE_OBJC_ARC = YES;
329 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
330 | CLANG_WARN_BOOL_CONVERSION = YES;
331 | CLANG_WARN_COMMA = YES;
332 | CLANG_WARN_CONSTANT_CONVERSION = YES;
333 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
334 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
335 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
336 | CLANG_WARN_EMPTY_BODY = YES;
337 | CLANG_WARN_ENUM_CONVERSION = YES;
338 | CLANG_WARN_INFINITE_RECURSION = YES;
339 | CLANG_WARN_INT_CONVERSION = YES;
340 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
341 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
342 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
343 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
344 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
345 | CLANG_WARN_STRICT_PROTOTYPES = YES;
346 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
347 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
348 | CLANG_WARN_UNREACHABLE_CODE = YES;
349 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
350 | CODE_SIGN_IDENTITY = "-";
351 | COPY_PHASE_STRIP = NO;
352 | DEBUG_INFORMATION_FORMAT = dwarf;
353 | ENABLE_STRICT_OBJC_MSGSEND = YES;
354 | ENABLE_TESTABILITY = YES;
355 | GCC_C_LANGUAGE_STANDARD = gnu11;
356 | GCC_DYNAMIC_NO_PIC = NO;
357 | GCC_NO_COMMON_BLOCKS = YES;
358 | GCC_OPTIMIZATION_LEVEL = 0;
359 | GCC_PREPROCESSOR_DEFINITIONS = (
360 | "DEBUG=1",
361 | "$(inherited)",
362 | );
363 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
364 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
365 | GCC_WARN_UNDECLARED_SELECTOR = YES;
366 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
367 | GCC_WARN_UNUSED_FUNCTION = YES;
368 | GCC_WARN_UNUSED_VARIABLE = YES;
369 | MACOSX_DEPLOYMENT_TARGET = 10.13;
370 | MTL_ENABLE_DEBUG_INFO = YES;
371 | ONLY_ACTIVE_ARCH = YES;
372 | SDKROOT = macosx;
373 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
374 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
375 | };
376 | name = Debug;
377 | };
378 | A137F1DC204B76A2003B43E3 /* Release */ = {
379 | isa = XCBuildConfiguration;
380 | buildSettings = {
381 | ALWAYS_SEARCH_USER_PATHS = NO;
382 | CLANG_ANALYZER_NONNULL = YES;
383 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
384 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
385 | CLANG_CXX_LIBRARY = "libc++";
386 | CLANG_ENABLE_MODULES = YES;
387 | CLANG_ENABLE_OBJC_ARC = YES;
388 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
389 | CLANG_WARN_BOOL_CONVERSION = YES;
390 | CLANG_WARN_COMMA = YES;
391 | CLANG_WARN_CONSTANT_CONVERSION = YES;
392 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
393 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
394 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
395 | CLANG_WARN_EMPTY_BODY = YES;
396 | CLANG_WARN_ENUM_CONVERSION = YES;
397 | CLANG_WARN_INFINITE_RECURSION = YES;
398 | CLANG_WARN_INT_CONVERSION = YES;
399 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
400 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
401 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
402 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
403 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
404 | CLANG_WARN_STRICT_PROTOTYPES = YES;
405 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
406 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
407 | CLANG_WARN_UNREACHABLE_CODE = YES;
408 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
409 | CODE_SIGN_IDENTITY = "-";
410 | COPY_PHASE_STRIP = NO;
411 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
412 | ENABLE_NS_ASSERTIONS = NO;
413 | ENABLE_STRICT_OBJC_MSGSEND = YES;
414 | GCC_C_LANGUAGE_STANDARD = gnu11;
415 | GCC_NO_COMMON_BLOCKS = YES;
416 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
417 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
418 | GCC_WARN_UNDECLARED_SELECTOR = YES;
419 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
420 | GCC_WARN_UNUSED_FUNCTION = YES;
421 | GCC_WARN_UNUSED_VARIABLE = YES;
422 | MACOSX_DEPLOYMENT_TARGET = 10.13;
423 | MTL_ENABLE_DEBUG_INFO = NO;
424 | SDKROOT = macosx;
425 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
426 | };
427 | name = Release;
428 | };
429 | A137F1DE204B76A2003B43E3 /* Debug */ = {
430 | isa = XCBuildConfiguration;
431 | buildSettings = {
432 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
433 | CODE_SIGN_ENTITLEMENTS = SwiftNSWindowStyles/SwiftNSWindowStyles.entitlements;
434 | CODE_SIGN_STYLE = Automatic;
435 | COMBINE_HIDPI_IMAGES = YES;
436 | INFOPLIST_FILE = SwiftNSWindowStyles/Info.plist;
437 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
438 | PRODUCT_BUNDLE_IDENTIFIER = io.github.lukakerr.SwiftNSWindowStyles;
439 | PRODUCT_NAME = "$(TARGET_NAME)";
440 | SWIFT_VERSION = 5.0;
441 | };
442 | name = Debug;
443 | };
444 | A137F1DF204B76A2003B43E3 /* Release */ = {
445 | isa = XCBuildConfiguration;
446 | buildSettings = {
447 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
448 | CODE_SIGN_ENTITLEMENTS = SwiftNSWindowStyles/SwiftNSWindowStyles.entitlements;
449 | CODE_SIGN_STYLE = Automatic;
450 | COMBINE_HIDPI_IMAGES = YES;
451 | INFOPLIST_FILE = SwiftNSWindowStyles/Info.plist;
452 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
453 | PRODUCT_BUNDLE_IDENTIFIER = io.github.lukakerr.SwiftNSWindowStyles;
454 | PRODUCT_NAME = "$(TARGET_NAME)";
455 | SWIFT_VERSION = 5.0;
456 | };
457 | name = Release;
458 | };
459 | A137F1E1204B76A2003B43E3 /* Debug */ = {
460 | isa = XCBuildConfiguration;
461 | buildSettings = {
462 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
463 | BUNDLE_LOADER = "$(TEST_HOST)";
464 | CODE_SIGN_STYLE = Automatic;
465 | COMBINE_HIDPI_IMAGES = YES;
466 | INFOPLIST_FILE = SwiftNSWindowStylesTests/Info.plist;
467 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
468 | PRODUCT_BUNDLE_IDENTIFIER = io.github.lukakerr.SwiftNSWindowStylesTests;
469 | PRODUCT_NAME = "$(TARGET_NAME)";
470 | SWIFT_VERSION = 5.0;
471 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwiftNSWindowStyles.app/Contents/MacOS/SwiftNSWindowStyles";
472 | };
473 | name = Debug;
474 | };
475 | A137F1E2204B76A2003B43E3 /* Release */ = {
476 | isa = XCBuildConfiguration;
477 | buildSettings = {
478 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
479 | BUNDLE_LOADER = "$(TEST_HOST)";
480 | CODE_SIGN_STYLE = Automatic;
481 | COMBINE_HIDPI_IMAGES = YES;
482 | INFOPLIST_FILE = SwiftNSWindowStylesTests/Info.plist;
483 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
484 | PRODUCT_BUNDLE_IDENTIFIER = io.github.lukakerr.SwiftNSWindowStylesTests;
485 | PRODUCT_NAME = "$(TARGET_NAME)";
486 | SWIFT_VERSION = 5.0;
487 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwiftNSWindowStyles.app/Contents/MacOS/SwiftNSWindowStyles";
488 | };
489 | name = Release;
490 | };
491 | A137F1E4204B76A2003B43E3 /* Debug */ = {
492 | isa = XCBuildConfiguration;
493 | buildSettings = {
494 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
495 | CODE_SIGN_STYLE = Automatic;
496 | COMBINE_HIDPI_IMAGES = YES;
497 | INFOPLIST_FILE = SwiftNSWindowStylesUITests/Info.plist;
498 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
499 | PRODUCT_BUNDLE_IDENTIFIER = io.github.lukakerr.SwiftNSWindowStylesUITests;
500 | PRODUCT_NAME = "$(TARGET_NAME)";
501 | SWIFT_VERSION = 5.0;
502 | TEST_TARGET_NAME = SwiftNSWindowStyles;
503 | };
504 | name = Debug;
505 | };
506 | A137F1E5204B76A2003B43E3 /* Release */ = {
507 | isa = XCBuildConfiguration;
508 | buildSettings = {
509 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
510 | CODE_SIGN_STYLE = Automatic;
511 | COMBINE_HIDPI_IMAGES = YES;
512 | INFOPLIST_FILE = SwiftNSWindowStylesUITests/Info.plist;
513 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
514 | PRODUCT_BUNDLE_IDENTIFIER = io.github.lukakerr.SwiftNSWindowStylesUITests;
515 | PRODUCT_NAME = "$(TARGET_NAME)";
516 | SWIFT_VERSION = 5.0;
517 | TEST_TARGET_NAME = SwiftNSWindowStyles;
518 | };
519 | name = Release;
520 | };
521 | /* End XCBuildConfiguration section */
522 |
523 | /* Begin XCConfigurationList section */
524 | A137F1B2204B76A2003B43E3 /* Build configuration list for PBXProject "SwiftNSWindowStyles" */ = {
525 | isa = XCConfigurationList;
526 | buildConfigurations = (
527 | A137F1DB204B76A2003B43E3 /* Debug */,
528 | A137F1DC204B76A2003B43E3 /* Release */,
529 | );
530 | defaultConfigurationIsVisible = 0;
531 | defaultConfigurationName = Release;
532 | };
533 | A137F1DD204B76A2003B43E3 /* Build configuration list for PBXNativeTarget "SwiftNSWindowStyles" */ = {
534 | isa = XCConfigurationList;
535 | buildConfigurations = (
536 | A137F1DE204B76A2003B43E3 /* Debug */,
537 | A137F1DF204B76A2003B43E3 /* Release */,
538 | );
539 | defaultConfigurationIsVisible = 0;
540 | defaultConfigurationName = Release;
541 | };
542 | A137F1E0204B76A2003B43E3 /* Build configuration list for PBXNativeTarget "SwiftNSWindowStylesTests" */ = {
543 | isa = XCConfigurationList;
544 | buildConfigurations = (
545 | A137F1E1204B76A2003B43E3 /* Debug */,
546 | A137F1E2204B76A2003B43E3 /* Release */,
547 | );
548 | defaultConfigurationIsVisible = 0;
549 | defaultConfigurationName = Release;
550 | };
551 | A137F1E3204B76A2003B43E3 /* Build configuration list for PBXNativeTarget "SwiftNSWindowStylesUITests" */ = {
552 | isa = XCConfigurationList;
553 | buildConfigurations = (
554 | A137F1E4204B76A2003B43E3 /* Debug */,
555 | A137F1E5204B76A2003B43E3 /* Release */,
556 | );
557 | defaultConfigurationIsVisible = 0;
558 | defaultConfigurationName = Release;
559 | };
560 | /* End XCConfigurationList section */
561 | };
562 | rootObject = A137F1AF204B76A2003B43E3 /* Project object */;
563 | }
564 |
--------------------------------------------------------------------------------
/SwiftNSWindowStyles/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
673 |
674 |
675 |
676 |
677 |
678 |
679 |
680 |
681 |
682 |
683 |
684 |
685 |
686 |
687 |
688 |
689 |
690 |
691 |
692 |
693 |
694 |
695 |
696 |
697 |
698 |
699 |
700 |
701 |
702 |
703 |
704 |
705 |
706 |
707 |
708 |
709 |
710 |
711 |
712 |
713 |
714 |
715 |
716 |
717 |
718 |
719 |
--------------------------------------------------------------------------------