ClashX.Meta/ClashX/Basic/NSView+Layout.swift

36 lines
1.2 KiB
Swift

//
// UIView+Layout.swift
// BilibiliLive
//
// Created by Etan Chen on 2021/4/4.
//
import AppKit
extension NSView {
@discardableResult
func makeConstraints(_ block: (NSView) -> [NSLayoutConstraint]) -> Self {
translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate(block(self))
return self
}
@discardableResult
func makeConstraintsToBindToSuperview(_ inset: NSEdgeInsets = .init(top: 0, left: 0, bottom: 0, right: 0)) -> Self {
return makeConstraints { [
$0.leftAnchor.constraint(equalTo: $0.superview!.leftAnchor, constant: inset.left),
$0.rightAnchor.constraint(equalTo: $0.superview!.rightAnchor, constant: -inset.right),
$0.topAnchor.constraint(equalTo: $0.superview!.topAnchor, constant: inset.top),
$0.bottomAnchor.constraint(equalTo: $0.superview!.bottomAnchor, constant: -inset.bottom)
] }
}
@discardableResult
func makeConstraintsBindToCenterOfSuperview() -> Self {
return makeConstraints { [
$0.centerXAnchor.constraint(equalTo: $0.superview!.centerXAnchor),
$0.centerYAnchor.constraint(equalTo: $0.superview!.centerYAnchor)
] }
}
}