44 lines
1.3 KiB
Swift
44 lines
1.3 KiB
Swift
//
|
||
// 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
|
||
)
|
||
}
|
||
}
|
||
}
|