自定义形状,
This commit is contained in:
43
demo/Extensions/TopRoundedRectangle.swift
Normal file
43
demo/Extensions/TopRoundedRectangle.swift
Normal file
@@ -0,0 +1,43 @@
|
||||
//
|
||||
// TopRound.swift
|
||||
// demo
|
||||
//
|
||||
// Created by Jason on 2024/1/30.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
// 顶部圆角图形,兼容ios16以下版本用的
|
||||
struct TopRoundedRectangle: Shape {
|
||||
let cornerRadius: Double
|
||||
|
||||
init(cornerRadius: Double = 0) {
|
||||
self.cornerRadius = cornerRadius
|
||||
}
|
||||
|
||||
func path(in rect: CGRect) -> Path {
|
||||
Path { path in
|
||||
path.move(to: CGPoint(x: rect.minX + cornerRadius, y: rect.minY))
|
||||
path.addLine(to: CGPoint(x: rect.maxX - cornerRadius, y: rect.minY))
|
||||
path.addArc(
|
||||
center: CGPoint(x: rect.width - cornerRadius, y: cornerRadius),
|
||||
radius: cornerRadius,
|
||||
startAngle: Angle(degrees: -90),
|
||||
endAngle: Angle(degrees: 0),
|
||||
clockwise: false
|
||||
)
|
||||
|
||||
path.addLine(to: CGPoint(x: rect.maxX, y: rect.maxY))
|
||||
path.addLine(to: CGPoint(x: rect.minX, y: rect.maxY))
|
||||
path.addLine(to: CGPoint(x: rect.minX, y: cornerRadius))
|
||||
|
||||
path.addArc(
|
||||
center: CGPoint(x: cornerRadius, y: cornerRadius),
|
||||
radius: cornerRadius,
|
||||
startAngle: Angle(degrees: 180),
|
||||
endAngle: Angle(degrees: 270),
|
||||
clockwise: false
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user