我想知道如何在swift中画一条虚线,而不是像这样画一条规则的直线:--------------,我知道我可以画多条线,但如果我只写一行,那就需要太多不必要的代码.顺便说一句,它必须在CoreGraphics中.

推荐答案

创建虚线的方法与Objective-C相同,只是要使用Swift.

以下是如何使用UIBezierPath执行此操作:

let  path = UIBezierPath()

let  p0 = CGPoint(x: self.bounds.minX, y: self.bounds.midY)
path.move(to: p0)

let  p1 = CGPoint(x: self.bounds.maxX, y: self.bounds.midY)
path.addLine(to: p1)

let  dashes: [ CGFloat ] = [ 16.0, 32.0 ]
path.setLineDash(dashes, count: dashes.count, phase: 0.0)

path.lineWidth = 8.0
path.lineCapStyle = .butt
UIColor.magenta.set()
path.stroke()

以下是如何使用UIBezierPath绘制虚线:

let  path = UIBezierPath()

let  p0 = CGPointMake(CGRectGetMinX(self.bounds), CGRectGetMidY(self.bounds))
path.moveToPoint(p0)

let  p1 = CGPointMake(CGRectGetMaxX(self.bounds), CGRectGetMidY(self.bounds))
path.addLineToPoint(p1)

let  dashes: [ CGFloat ] = [ 0.0, 16.0 ]
path.setLineDash(dashes, count: dashes.count, phase: 0.0)
path.lineWidth = 8.0
path.lineCapStyle = .Round
UIColor.magentaColor().set()
path.stroke()

下面是如何使用CGContext绘制虚线:

let  context: CGContext = UIGraphicsGetCurrentContext()!

let  p0 = CGPointMake(CGRectGetMinX(self.bounds), CGRectGetMidY(self.bounds))
CGContextMoveToPoint(context, p0.x, p0.y)

let  p1 = CGPointMake(CGRectGetMaxX(self.bounds), CGRectGetMidY(self.bounds))
CGContextAddLineToPoint(context, p1.x, p1.y)

let  dashes: [ CGFloat ] = [ 16.0, 32.0 ]
CGContextSetLineDash(context, 0.0, dashes, dashes.count)

CGContextSetLineWidth(context, 8.0)
CGContextSetLineCap(context, .Butt)
UIColor.blueColor().set()
CGContextStrokePath(context)

Swift相关问答推荐

如何在Swift 中创建移动的uil标签?

SwiftUI状态更新

MyApp类型不符合协议App''''

如何获取SCNCamera正在查看的网格点(SCNNode)的局部坐标和局部法线?

通过SwiftUI中的列表 Select 从字典中检索值

SwiftUI正在初始化不带状态变量的绑定变量

如何强制创建新的UIViewControllerRenatable|更新Make UIViewController上的视图

SwiftUI如何能够在Text中使用字符串字面量来创建LocalizedStringKey?

为什么无法在 Swift 中使用AVFoundation扫描 QRCode

如何将视图添加到多行文本视图的末尾?

SwiftUI - Select 器没有 Select 值

SwiftUI 中的 .primary 和 .secondary colored颜色 是什么?

在 Swift 中获取双精度的小数部分

我可以在 Swift 中为泛型类型 T 分配默认类型吗?

更改日期 Select 器的文本 colored颜色

iOS/Swift:如何检测 UITextField 上的touch 动作

哪些版本的 Xcode 支持哪些版本的 Swift?

自动布局:获取 UIImageView 高度以正确计算单元格高度

如何在 SwiftUI 中为删除和禁用配置 ContextMenu 按钮?

SwiftUI:将多个 BindableObjects 放入环境