Swiftpack.co - Package - ChimeHQ/WindowTreatment

Carthage compatible

WindowTreatment

WindowTreatment is a small set of classes and extensions to aid in working with NSWindow and its associated functions.

Integration

Carthage:

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.

github "ChimeHQ/WindowTreatment"

Swift Package Manager:

dependencies: [
        .package(url: "https://github.com/ChimeHQ/WindowTreatment.git")
]

Classes

WindowTitlebarAwareView

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
// ...

WindowTitlebarAwareViewController

A wrapper controller useful in cases where you need to use WindowTitlebarAwareView with a system that only accepts NSViewControllers, like NSSplitViewController.

WindowStateObserver

Convenience wrappers around observation of NSWindow states like key and main. Very useful for UI changes in response to these changes.

WindowStateAwareView

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.

NSWindow Extensions

Sizing conveniences:

// 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

NSView Extensions

Window state:

self.windowIsMain
self.windowIsKey

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.

Github

link
Stars: 16
Help us keep the lights on

Dependencies

Used By

Total: 0

Releases

1.2.1 - Aug 28, 2019

Includes some expanded documentation.

1.2 - May 30, 2019

  • SwiftPM support
  • Some improvements to WindowStateAwareView

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

Initial Release!