Files
yingmeng-ios-switf/yinmeng-ios/Extension/UIView/UIView+.swift

215 lines
4.2 KiB
Swift
Raw Normal View History

2024-02-29 23:49:12 +08:00
//
// UIView+.swift
// yinmeng-ios
//
2024-03-05 14:04:09 +08:00
// Created by yinmeng on 2024/2/29.
2024-02-29 23:49:12 +08:00
//
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
}
}
}
2024-03-01 01:27:25 +08:00
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;
}
}