首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SwiftUI: UIkit UIbezier to SwiftUI路径

SwiftUI: UIkit UIbezier to SwiftUI路径
EN

Stack Overflow用户
提问于 2019-12-12 19:05:04
回答 1查看 1K关注 0票数 3

我正在尝试将UIBezierPath转换为SwiftUI路径

通过编辑下面的代码,我成功地手动完成了操作:

发自:

UIBezierPath controlPoint1: CGPoint(x: 1226.38,y: 0),controlPoint2: CGPoint(x: 1199.37,y: 0)

至:

SwiftUI control1: CGPoint(x: 1226.38,y: 0),control2: CGPoint(x: 1199.37,y: 0)

完整路径代码的示例:

代码语言:javascript
复制
       let stroke253 = UIBezierPath()
            stroke253.move(to: CGPoint(x: 1253.45, y: 0))
            stroke253.addCurve(to: CGPoint(x: 1172.3, y: 0), controlPoint1: CGPoint(x: 1226.38, y: 0), controlPoint2: CGPoint(x: 1199.37, y: 0))
            stroke253.addCurve(to: CGPoint(x: 990.46, y: 0), controlPoint1: CGPoint(x: 1111.66, y: 0), controlPoint2: CGPoint(x: 1051.12, y: 0))
            stroke253.addCurve(to: CGPoint(x: 808.64, y: 0), controlPoint1: CGPoint(x: 929.82, y: 0), controlPoint2: CGPoint(x: 869.27, y: 0))
            stroke253.addCurve(to: CGPoint(x: 626.74, y: 0), controlPoint1: CGPoint(x: 747.98, y: 0), controlPoint2: CGPoint(x: 687.4, y: 0))
            stroke253.addCurve(to: CGPoint(x: 444.84, y: 0), controlPoint1: CGPoint(x: 566.08, y: 0), controlPoint2: CGPoint(x: 505.5, y: 0))
            stroke253.addCurve(to: CGPoint(x: 263, y: 0), controlPoint1: CGPoint(x: 384.18, y: 0), controlPoint2: CGPoint(x: 323.63, y: 0))
            stroke253.addCurve(to: CGPoint(x: 81.18, y: 0), controlPoint1: CGPoint(x: 202.37, y: 0), controlPoint2: CGPoint(x: 141.82, y: 0))
            stroke253.addCurve(to: CGPoint.zero, controlPoint1: CGPoint(x: 54.11, y: 0), controlPoint2: CGPoint(x: 27.07, y: 0))
            context.saveGState()
            context.translateBy(x: 128.21, y: 144.05)
            stroke253.lineWidth = 2
            UIColor(hue: 1, saturation: 0.636, brightness: 0.549, alpha: 1).setStroke()
            stroke253.stroke()
            context.restoreGState()

            context.restoreGState()
        }
代码语言:javascript
复制
import SwiftUI

struct PatternScene: View {
   let stroke253 = Path { stroke253 in
       stroke253.move(to: CGPoint(x: 1253.45, y: 0))
    stroke253.addCurve(to: CGPoint(x: 1172.3, y: 0), control1: CGPoint(x: 1226.38, y: 0), control2: CGPoint(x: 1199.37, y: 0))
    stroke253.addCurve(to: CGPoint(x: 990.46, y: 0), control1: CGPoint(x: 1111.66, y: 0), control2: CGPoint(x: 1051.12, y: 0))
    stroke253.addCurve(to: CGPoint(x: 808.64, y: 0), control1: CGPoint(x: 929.82, y: 0), control2: CGPoint(x: 869.27, y: 0))
    stroke253.addCurve(to: CGPoint(x: 626.74, y: 0), control1: CGPoint(x: 747.98, y: 0), control2: CGPoint(x: 687.4, y: 0))
    stroke253.addCurve(to: CGPoint(x: 444.84, y: 0), control1: CGPoint(x: 566.08, y: 0), control2: CGPoint(x: 505.5, y: 0))
    stroke253.addCurve(to: CGPoint(x: 263, y: 0), control1: CGPoint(x: 384.18, y: 0), control2: CGPoint(x: 323.63, y: 0))
    stroke253.addCurve(to: CGPoint(x: 81.18, y: 0), control1: CGPoint(x: 202.37, y: 0), control2: CGPoint(x: 141.82, y: 0))
    stroke253.addCurve(to: CGPoint.zero, control1: CGPoint(x: 54.11, y: 0), control2: CGPoint(x: 27.07, y: 0))
    }


    var body: some View {
        self.stroke253
            .stroke(Color.blue, lineWidth: 10)

    }
}

struct PatternScene_Previews: PreviewProvider {
    static var previews: some View {
        PatternScene()
    }
}

问:不用手工编辑,我怎么做?

感谢你的帮助!

干杯

EN

回答 1

Stack Overflow用户

发布于 2019-12-12 20:16:22

我不太明白你的问题,或者错过了一些信息。但如果您需要将UIBezierPath转换为Path

Path(UIBezierPath().cgPath)Path(stroke253.cgPath)作为变量。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59311246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档