Ios 如何用UIBezierPath绘制之字形线?
我有两个已知的CG点,我想在这两个点之间画一条锯齿状的之字形线。我知道点之间的距离,以及大约要绘制多少条线,这是基于距离动态设置的Ios 如何用UIBezierPath绘制之字形线?,ios,objective-c,uikit,drawing,Ios,Objective C,Uikit,Drawing,我有两个已知的CG点,我想在这两个点之间画一条锯齿状的之字形线。我知道点之间的距离,以及大约要绘制多少条线,这是基于距离动态设置的 任何指导都将不胜感激 下面是我最近用swift编写的代码示例,以获得这种效果。此示例将视图作为输入,并对其应用锯齿效果。您可以参考代码为两点创建效果 func applyZigZagEffect(givenView: UIView) { let width = givenView.frame.size.width let height = given
任何指导都将不胜感激 下面是我最近用swift编写的代码示例,以获得这种效果。此示例将视图作为输入,并对其应用锯齿效果。您可以参考代码为两点创建效果
func applyZigZagEffect(givenView: UIView) {
let width = givenView.frame.size.width
let height = givenView.frame.size.height
let givenFrame = givenView.frame
let zigZagWidth = CGFloat(7)
let zigZagHeight = CGFloat(5)
let yInitial = height-zigZagHeight
var zigZagPath = UIBezierPath()
zigZagPath.moveToPoint(CGPointMake(0, 0))
zigZagPath.addLineToPoint(CGPointMake(0, yInitial))
var slope = -1
var x = CGFloat(0)
var i = 0
while x < width {
x = zigZagWidth * CGFloat(i)
let p = zigZagHeight * CGFloat(slope)
let y = yInitial + p
let point = CGPointMake(x, y)
zigZagPath.addLineToPoint(point)
slope = slope*(-1)
i++
}
zigZagPath.addLineToPoint(CGPointMake(width, 0))
var shapeLayer = CAShapeLayer()
shapeLayer.path = zigZagPath.CGPath
givenView.layer.mask = shapeLayer
}
func applyzigzagfeact(给定视图:UIView){
let width=givenView.frame.size.width
let height=给定的视图.框架.尺寸.高度
设givenFrame=givenView.frame
让之字形宽度=CGFloat(7)
让之字形高度=CGFloat(5)
设yInitial=高度之字形高度
var zigZagPath=UIBezierPath()
移动点(CGPointMake(0,0))
zigZagPath.addLineToPoint(CGPointMake(0,yInitial))
变量斜率=-1
var x=CGFloat(0)
变量i=0
而x
您可以调整“之字形宽度”和“之字形高度”以获得您选择的效果。这将在视图的顶部创建“之字形线条”。可以通过锯齿线传递所需的边数
public extension UIBezierPath {
func zigZagTop(_ rect: CGRect) -> UIBezierPath {
let edges = 10
let cornerWidth = rect.size.width / CGFloat(edges)
let cornerHeight = cornerWidth/2
for i in 0...edges {
let newHeight = (i % 2) == 0 ? cornerHeight : 0
if i == 0 {
move(to: CGPoint(x:rect.size.width, y:newHeight))
} else {
addLine(to: CGPoint(x: rect.size.width - cornerWidth * CGFloat(i) , y: newHeight))
}
}
addLine(to: CGPoint(x: 0, y:rect.size.height))
addLine(to: CGPoint(x: rect.size.width, y:rect.size.height))
close()
return self
}
}