Files
yingmeng-ios-switf/yinmeng-ios/Extension/UIView/UIView+.swift
2024-03-01 01:27:25 +08:00

215 lines
4.2 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// UIView+.swift
// yinmeng-ios
//
// Created by MaiMang on 2024/2/29.
//
import UIKit
extension UIView {
/// x
public var x : CGFloat {
get {
return self.frame.origin.x
}
set (x) {
var frame = self.frame
frame.origin.x = x
self.frame = frame
}
}
/// y
public var y : CGFloat {
get {
return self.frame.origin.y
}
set (y) {
var frame = self.frame
frame.origin.y = y
self.frame = frame
}
}
/// maxX
public var maxX : CGFloat {
get {
return self.frame.maxX
}
set(maxX) {
self.frame.origin.x = maxX - self.frame.size.width
}
}
/// maxY
public var maxY : CGFloat {
get {
return self.frame.maxY
}
set(maxY) {
self.frame.origin.y = maxY - self.frame.size.height
}
}
/// width
public var width : CGFloat {
get {
return self.frame.size.width
}
set (width) {
var frame = self.frame
frame.size.width = width
self.frame = frame
}
}
/// height
public var height : CGFloat {
get {
return self.frame.size.height
}
set (height) {
var frame = self.frame
frame.size.height = height
self.frame = frame
}
}
/// centerX
public var centerX : CGFloat {
get {
return self.center.x
}
set (centerX) {
var center = self.center
center.x = centerX
self.center = center
}
}
/// centerY
public var centerY : CGFloat {
get {
return self.center.y
}
set (centerY) {
var center = self.center
center.y = centerY
self.center = center
}
}
/// size
public var size : CGSize {
get {
return self.frame.size
}
set (size) {
var newSize = self.frame.size
newSize = CGSize(width: size.width, height: size.height)
self.frame.size = newSize
}
}
/// origin
public var origin : CGPoint {
get {
return self.frame.origin
}
set (origin) {
var newOrigin = self.frame.origin
newOrigin = CGPoint(x: origin.x, y: origin.y)
self.frame.origin = newOrigin
}
}
/// borderWidth
public var borderWidth: CGFloat {
get {
return self.layer.borderWidth
}
set (borderWidth){
self.layer.borderWidth = borderWidth
guard self.layer.masksToBounds else {
return
}
self.layer.masksToBounds = true
}
}
}
extension UIView {
//4
func addCorner(cornerRadii:CornerRadii, frame:CGRect){
let path = createPathWithRoundedRect(bounds: frame, cornerRadii:cornerRadii)
let shapLayer = CAShapeLayer()
shapLayer.frame = self.bounds
shapLayer.path = path
self.layer.mask = shapLayer
}
//
struct CornerRadii {
var topLeft :CGFloat = 0
var topRight :CGFloat = 0
var bottomLeft :CGFloat = 0
var bottomRight :CGFloat = 0
}
//线
func createPathWithRoundedRect( bounds:CGRect,cornerRadii:CornerRadii) -> CGPath
{
let minX = bounds.minX
let minY = bounds.minY
let maxX = bounds.maxX
let maxY = bounds.maxY
//
let topLeftCenterX = minX + cornerRadii.topLeft
let topLeftCenterY = minY + cornerRadii.topLeft
let topRightCenterX = maxX - cornerRadii.topRight
let topRightCenterY = minY + cornerRadii.topRight
let bottomLeftCenterX = minX + cornerRadii.bottomLeft
let bottomLeftCenterY = maxY - cornerRadii.bottomLeft
let bottomRightCenterX = maxX - cornerRadii.bottomRight
let bottomRightCenterY = maxY - cornerRadii.bottomRight
//YESiOSUIView
let path :CGMutablePath = CGMutablePath();
//
path.addArc(center: CGPoint(x: topLeftCenterX, y: topLeftCenterY), radius: cornerRadii.topLeft, startAngle: CGFloat.pi, endAngle: CGFloat.pi * 3 / 2, clockwise: false)
//
path.addArc(center: CGPoint(x: topRightCenterX, y: topRightCenterY), radius: cornerRadii.topRight, startAngle: CGFloat.pi * 3 / 2, endAngle: 0, clockwise: false)
//
path.addArc(center: CGPoint(x: bottomRightCenterX, y: bottomRightCenterY), radius: cornerRadii.bottomRight, startAngle: 0, endAngle: CGFloat.pi / 2, clockwise: false)
//
path.addArc(center: CGPoint(x: bottomLeftCenterX, y: bottomLeftCenterY), radius: cornerRadii.bottomLeft, startAngle: CGFloat.pi / 2, endAngle: CGFloat.pi, clockwise: false)
path.closeSubpath();
return path;
}
}