ViewPlus is a small library that provides some helpful extension and capabilities for working with NSView.
dependencies: [
.package(url: "https://github.com/ChimeHQ/ViewPlus.git")
]
github "ChimeHQ/ViewPlus"
TrackingArea
func removeTrackingArea(with rect: NSRect)
func removeTrackingAreas(_ areas: [NSTrackingArea])
func removeAllTrackingAreas()
Auto Layout
var useAutoLayout: Bool
var subviewsUseAutoLayout: Bool
Animation
func animateLayout(changes: (NSAnimationContext) -> Void)
NSLayoutConstraint
func withPriority(_ p: NSLayoutConstraint.Priority) -> NSLayoutConstraint
NSLayoutConstraint.Priority
func offset(by: Float) -> NSLayoutConstraint.Priority
UnrestrictedLayerView
By default, the layer
property of an NSView
has a number of restrictions. There are many properties that are owned and controlled by the AppKit, and are impossible to modify in a safe and predictable way. This class provides a single property unrestrictedLayer
, which has no restrictions whatsoever.
This layer will just match the frame of the hosting view. This is is a great way to integrate a layer into the Auto Layout system. It's also nice for applying transforms.
NoSelfHitTestingView
A really simple view that will never become first responder due to a mouse down event. This is handy for routing clicks down into other parts of the view hierarchy.
XiblessViewController
This is a very simple NSViewController subclass that eliminates some boilerplate for view controllers that always create their views programatically. This class is based on work on a blog post about view controllers without XIBs, and includes a lot of great discussion about the pros and cons of such an approach.
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.