iOS开发SwiftUI

SwiftUI 给视图添加位置圆角效果

  • 掌握cornerRadius设置圆角效果

关键技术:通过 UIRectCorner获取是四个角的定义

public struct UIRectCorner : OptionSet {

    public init(rawValue: UInt)

    
    public static var topLeft: UIRectCorner { get }

    public static var topRight: UIRectCorner { get }

    public static var bottomLeft: UIRectCorner { get }

    public static var bottomRight: UIRectCorner { get }

    public static var allCorners: UIRectCorner { get }
}

UIBezierPath

UIBezierPath用于绘制直线或曲线的对象

class UIBezierPath : NSObject

最初,您使用此类来指定路径的几何形状。路径可以定义简单的形状,例如矩形,椭圆形和弧形,也可以定义包含直线段和曲线段混合的复杂多边形。定义形状后,可以使用此类的其他方法在当前图形上下文中渲染路径。

UIBezierPath对象将路径的几何形状与在渲染过程中描述路径的属性结合在一起。您可以分别设置几何图形和属性,并且可以彼此独立地进行更改。按照所需的方式配置对象之后,可以告诉它在当前上下文中进行绘制。由于创建,配置和渲染过程都是不同的步骤,因此可以轻松地在代码中重用Bézier路径对象。您甚至可以使用同一对象多次渲染相同的形状,也许在连续的绘图调用之间更改渲染选项。

代码

1、 圆角形状

struct RoundedCorner: Shape {

    var radius: CGFloat = .infinity
    var corners: UIRectCorner = .allCorners

    func path(in rect: CGRect) -> Path {
        let path = UIBezierPath(roundedRect: rect, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
        return Path(path.cgPath)
    }
}

2.扩展视图增加cornerRadius修饰符