WindowTreatment is a small set of classes and extensions to aid in working with NSWindow and its associated functions.
You can use Carthage to intall this as a static library. However, because the library relies on Objective-C categories to extend AppKit classes, you must include "-ObjC" in your OTHER_LDFLAGS setting.
Swift Package Manager:
dependencies: [ .package(url: "https://github.com/ChimeHQ/WindowTreatment.git") ]
A simple container view that makes it much easier to correctly position content under the titlebar of a host NSWindow. This turns out to be a fair esoteric thing to do, but can be essential when your NSWindow has a transparent titlebar.
let titlebarAwareView = WindowTitlebarAwareView() // myView will always be correctly position below the containing window's // titlebar region, and react accordingly if the titlebar size/state changes titlebarAwareView.contentView = myView // ...
A wrapper controller useful in cases where you need to use WindowTitlebarAwareView with a system that only accepts NSViewControllers, like NSSplitViewController.
Convenience wrappers around observation of NSWindow states like
main. Very useful for UI changes in response to these changes.
Super-simple class that uses
WindowStateObserver and provides a nice base for NSView subclasses that need to change their appearance depending on host window state.
A class that tracks changes in the application's windows, simplifying logic that depends on the state of all windows.
// simple method to size a window to pleasing dimensions relative to its screen window.makeReasonableSize()
Title bar transparency helpers:
window.titlebarTransparentWithFullSizeContent = true window.usesFullSizeContentView = true
Suggestions or Feedback
We'd love to hear from you! Get in touch via twitter, an issue, or a pull request.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
Help us keep the lights on
1.2.3 - Nov 8, 2019
1.2.1 - Aug 28, 2019
Includes some expanded documentation.
1.2 - May 30, 2019
- SwiftPM support
- Some improvements to
1.1 - May 29, 2019
Now includes two new classes for NSWindow state observation. Very handy for NSView subclasses that need to change their UI/behavior depending on host window state.
1.0 - May 10, 2019