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