程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了需要为 UIView Swift 创建自定义形状大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决需要为 UIView Swift 创建自定义形状?

开发过程中遇到需要为 UIView Swift 创建自定义形状的问题如何解决?下面主要结合日常开发的经验,给出你关于需要为 UIView Swift 创建自定义形状的解决方法建议,希望对你解决需要为 UIView Swift 创建自定义形状有所启发或帮助;

我需要为我的项目创建这个自定义 UIVIEw。I need to achieve this

我通过创建自己的自定义 UIVIEw 然后在其上绘图来进行反复试验。 I'm working on this

我的问题是,如果我能够绘制自定义形状,我将如何剪掉 UIVIEw 的剩余空白

    func drawCustomShape() {
    let vIEwSize = self.frame.size
    let buttonSloTradius = CGfloat(30)
    let effectiveVIEwHeight = vIEwSize.height - buttonSloTradius
    
    let path = UIBezIErPath()
    path.move(to: CGPoint(x: 30,y: 0))
    path.addline(to: CGPoint(x: vIEwSize.wIDth - 30,y: 0))
    
    path.addArc(withCenter: CGPoint(x: vIEwSize.wIDth - 30,y: 30),radius: 30,startAngle: .pi * 3 / 2,endAngle: 0,clockwise: truE)
    
    path.addline(to: CGPoint(x: vIEwSize.wIDth,y: effectiveVIEwHeight))
    
    path.addArc(withCenter: CGPoint(x: vIEwSize.wIDth - 30,y: effectiveVIEwHeight - 30),startAngle: 0,endAngle: .pi / 2,clockwise: truE)
    
    path.addline(to: CGPoint(x: vIEwSize.wIDth / 4,y: effectiveVIEwHeight))
    
    // close path join to origin
    path.close()
    
    UIcolor.secondarySystemFill.setFill()
    path.fill()
    
    path.linewidth = 6.0
    path.stroke()
   
    
}

解决方法

您可以使用带有清晰背景颜色的 UIView,并使用带有所需路径的 CAShapeLayer,如下所示:

extension UIView {
    func drawCustomShape() {
        let cornerRadius: CGFloat = 18.0
        let shapeOffset = self.frame.size.height * 0.2

        //create shape layer
        let shapeLayer = CAShapeLayer()
        shapeLayer.frame = self.bounds
        shapeLayer.lineWidth = 1.0
        shapeLayer.fillColor = UIColor.white.cgColor

        self.layer.addSublayer(shapeLayer)

        //create path
        let path = UIBezierPath()

        //top left point
        path.move(to: CGPoint(x: 0,y: cornerRadius))
        //top left corner
        path.addQuadCurve(to: CGPoint(x: cornerRadius,y: 0),controlPoint: CGPoint(x: 0,y: 0))

        //top right point
        path.addLine(to: CGPoint(x: self.frame.size.width - cornerRadius,y: 0))
        //top right corner
        path.addQuadCurve(to: CGPoint(x: self.frame.size.width,y: cornerRadius),controlPoint: CGPoint(x: self.frame.size.width,y: 0))

        //bottom right point
        path.addLine(to: CGPoint(x: self.frame.size.width,y: self.frame.size.height - shapeOffset - cornerRadius))
        //bottom right corner
        path.addQuadCurve(to: CGPoint(x: self.frame.size.width - cornerRadius,y: self.frame.size.height - shapeOffset),y: self.frame.size.height - shapeOffset))

        //bottom left
        path.addLine(to: CGPoint(x: cornerRadius,y: self.frame.size.height))
        //bottom left corner
        path.addQuadCurve(to: CGPoint(x: 0,y: self.frame.size.height - cornerRadius),y: self.frame.size.height))

        path.close()

        shapeLayer.path = path.cgPath
    }

用法:

@H_349_9@myView.drawCustomShape()

结果:

需要为 UIView Swift 创建自定义形状

大佬总结

以上是大佬教程为你收集整理的需要为 UIView Swift 创建自定义形状全部内容,希望文章能够帮你解决需要为 UIView Swift 创建自定义形状所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: