gpt4 book ai didi

ios - Swift 中的函数式图形

转载 作者:行者123 更新时间:2023-11-30 11:16:39 25 4
gpt4 key购买 nike

如何使用 Swift 在 iOS 上路由图形渲染输出?来自像 Clojure 这样的函数式语言,在注入(inject)上下文的 Swift 和 Objective-C 绘图库中似乎存在大量隐含的副作用和单一屏幕。

示例

let path = UIBezierPath(arcCenter: ...) // looks like a value
path.stroke() // wow, what just happened here, where did this render to? How would I have rendered to an image?

所以,我认为你可以这样做:

guard let context = UIGraphicsGetCurrentContext() else {
return
}
context.saveGState()
context.translateBy(x: self.bounds.midX, y: self.bounds.midY)

path.stroke() // OK, so this must be drawing to the current context with an offset
context.restoreGState() // what does this do?

在我看来,这样会更干净:

func drawThing(context: CGContext, radius: ...) {
context.drawArc(arcCenter: ..., radius: radius, ...)
}

我希望有一种更现代、更实用的方式来随着时间的推移改变上下文。

最佳答案

你想要的方法确实存在。您可以在上下文中调用各种 add.. 方法来绘制路径,并调用各种 lines...fill... 方法来绘制路径。使路径真正可见。您不必使用UIBezierPath

这是一个例子:

class MyView: UIView {
override func draw(_ rect: CGRect) {
let context = UIGraphicsGetCurrentContext()!
context.strokeLineSegments(between: [.zero, CGPoint(x: 10, y: 10)])
}
}

您可以找到所有这些方法的文档 here .

关于ios - Swift 中的函数式图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51683837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com