gpt4 book ai didi

swift - 如何在 Swift 4 中制作虚线或点线

转载 作者:搜寻专家 更新时间:2023-11-01 07:08:18 25 4
gpt4 key购买 nike

我一直在尝试在这样的 Playground 上这样做:

import UIKit
import XCPlayground

let path = UIBezierPath()
path.move(to: CGPoint(x:10,y:10))
path.addLine(to: CGPoint(x:290,y:10))
path.lineWidth = 2

let dashPattern : [CGFloat] = [0, 16]
path.setLineDash(dashPattern, count: 2, phase: 0)
path.lineCapStyle = CGLineCap.round
path.lineCapStyle = .butt
UIGraphicsBeginImageContextWithOptions(CGSize(width:300, height:20), false, 2)
path.stroke()

XCPlaygroundPage.currentPage.captureValue(value: UIGraphicsGetImageFromCurrentImageContext(), withIdentifier: "image")
UIGraphicsEndImageContext()

但结果是:

enter image description here

最佳答案

1) [0, 16] 的破折号模式在我看来没有意义。两个值都应大于 0。

2) 除此之外,您的代码是正确的,但是 Xcode 中 UIBezierPath 的 Playground 预览忽略了破折号模式(就像它忽略颜色和许多其他设置一样 - 它只显示路径以抽象的方式)。

如果将路径渲染到图像中,虚线图案就会变得可见。这是我使用的代码(我将破折号模式数组更改为 [16,16]):

import UIKit
import XCPlayground

let path = UIBezierPath()
path.move(to: CGPoint(x:10,y:10))
path.addLine(to: CGPoint(x:290,y:10))
path.lineWidth = 2

let dashPattern : [CGFloat] = [16, 16]
path.setLineDash(dashPattern, count: 2, phase: 0)
path.lineCapStyle = CGLineCap.round
path.lineCapStyle = .butt

let renderer = UIGraphicsImageRenderer(size: CGSize(width: 300, height: 20))
let image = renderer.image { context in
path.stroke()
}
// image now contains an image of the path

关于swift - 如何在 Swift 4 中制作虚线或点线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46731999/

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