111 lines
3.0 KiB
Swift
111 lines
3.0 KiB
Swift
//
|
||
// LayoutConstraint.swift
|
||
// MusicPlayer
|
||
//
|
||
// Created by Mr.Zhou on 2024/3/27.
|
||
//
|
||
|
||
import UIKit
|
||
import Foundation
|
||
//全局导入SnapKit库
|
||
@_exported import SnapKit
|
||
//MARK: - 约束布局适配扩展
|
||
extension NSLayoutConstraint {
|
||
///是否等比调整约束
|
||
@IBInspectable var adapterScreen: Bool {
|
||
get {
|
||
return true
|
||
}
|
||
set {
|
||
if newValue {
|
||
self.constant = self.constant * width
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
/// 更改乘数约束
|
||
/// - Parameter multiplier: 比例值
|
||
/// - Returns: 更新后的约束
|
||
func setMultiplier(multiplier:CGFloat) -> NSLayoutConstraint {
|
||
NSLayoutConstraint.deactivate([self])
|
||
let newConstraint = NSLayoutConstraint(
|
||
item: firstItem as Any,
|
||
attribute: firstAttribute,
|
||
relatedBy: relation,
|
||
toItem: secondItem,
|
||
attribute: secondAttribute,
|
||
multiplier: multiplier,
|
||
constant: constant)
|
||
newConstraint.priority = priority
|
||
newConstraint.shouldBeArchived = self.shouldBeArchived
|
||
newConstraint.identifier = self.identifier
|
||
NSLayoutConstraint.activate([newConstraint])
|
||
return newConstraint
|
||
}
|
||
}
|
||
//MARK: - CALayer扩展
|
||
extension CALayer {
|
||
///设置边线颜色
|
||
var borderUIColor: UIColor {
|
||
get {
|
||
return UIColor(cgColor: self.borderColor!)
|
||
} set {
|
||
self.borderColor = newValue.cgColor
|
||
}
|
||
}
|
||
}
|
||
//MARK: - UIView扩展
|
||
extension UIView {
|
||
///圆角值
|
||
@IBInspectable var cornerRadius: CGFloat {
|
||
get {
|
||
return layer.cornerRadius
|
||
} set {
|
||
layer.masksToBounds = (newValue > 0)
|
||
layer.cornerRadius = newValue * width
|
||
}
|
||
}
|
||
///边线宽度
|
||
@IBInspectable var borderWidth: CGFloat {
|
||
get {
|
||
return layer.borderWidth
|
||
} set {
|
||
layer.borderWidth = newValue
|
||
}
|
||
}
|
||
///边线颜色
|
||
@IBInspectable var borderColor: UIColor {
|
||
get {
|
||
return layer.borderUIColor
|
||
} set {
|
||
layer.borderColor = newValue.cgColor
|
||
}
|
||
}
|
||
///获取父控制器
|
||
func parentController() -> UIViewController? {
|
||
var responder = self.next;
|
||
repeat {
|
||
if(responder?.isKind(of:UIViewController.classForCoder()))!{
|
||
return responder as? UIViewController
|
||
}
|
||
responder = responder?.next
|
||
}
|
||
while((responder) != nil)
|
||
return nil;
|
||
}
|
||
/// 获取指定类型的父视图控制器
|
||
/// - Parameter ofType: 父视图控制器的类型
|
||
/// - Returns: 指定类型的父视图控制器,如果找不到则返回 nil
|
||
func parentController<T: UIViewController>(ofType: T.Type) -> T? {
|
||
var responder = self.next
|
||
while let nextResponder = responder {
|
||
if let viewController = nextResponder as? T {
|
||
return viewController
|
||
}
|
||
responder = nextResponder.next
|
||
}
|
||
return nil
|
||
}
|
||
}
|