【问题标题】:Drawing grid using CAShapeLayer使用 CAShapeLayer 绘制网格
【发布时间】:2015-07-21 03:00:26
【问题描述】:

长话短说,我想在 CALayerShape 上绘制一个对角线网格。我的代码而不是直线会产生某种弯曲的疯狂。它看起来很有趣,我希望它是理想的效果,但不,不是。

我的问题: 1. 如何使用 CAShapeLayer 绘制直线? 2. 我是否在模拟器中发现了某种影响像素重力的黑洞?

func drawPath(_view:UIView, phase:CGFloat, segment:CGFloat){
        // we need two runs
        var height = CGRectGetHeight(view.frame)
        let width = CGRectGetWidth(view.frame)

        let segment:CGFloat = 40
        var currentX:CGFloat = segment
        var cgpath =  CGPathCreateMutable()

        for var y = height; y > 0 ; y = y - segment {


            CGPathMoveToPoint(cgpath, nil, 0, y)
            CGPathAddLineToPoint(cgpath, nil, currentX, 0)
            CGPathCloseSubpath(cgpath)

            currentX += segment
        }

        var layer = CAShapeLayer()
        layer.path = cgpath
        layer.strokeColor = UIColor.redColor().CGColor
        layer.lineWidth = 1
        layer.fillColor = UIColor.blackColor().CGColor

        view.layer.addSublayer(layer)


    }

【问题讨论】:

    标签: ios core-graphics core-animation


    【解决方案1】:

    你画的其实是直线。它看起来弯曲的事实是一种视觉错觉。你可以用纱线和一块纸板获得同样的效果。

    你的代码做错了。

    你需要用方格纸画出你想要的对角线网格,找出你的对角线网格的端点,然后想出一个循环来给你这些端点。

    如果你想在一个 5x5 的矩形中画一个对角线网格,你可以这样画线:

    0,1 to 1,0
    0,2 to 2,0
    0,3 to 3,0
    0,4 to 4,0
    

    您的网格间距可能比每个点更像 20 或 30 个点,并且您的整个网格可能是屏幕的完整大小,但您明白了。

    【讨论】:

    • 谢谢。我意识到我的代码没有渲染完美的网格并修复了它,但不知道这是错觉!
    • 点击此链接查看如何使用方格纸创建错觉:wikihow.com/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多