如何在swift中更改旋转后重绘我在UIView之上的图层(CAShapeLayer)

时间:2015-12-10 06:20:28

标签: ios iphone swift uiview calayer

我正在尝试创建从我从JSON获取的值生成的图表。我将它们放在图层上并将它们添加到我的视图中作为子图层。问题是在更改方向之后(或在夹点和缩放之后(或期间)(在UIScrollView内)),根据新修改的uiview(我已应用自动布局)不重绘图形。 我正在尝试不同的方法来看看我如何实现它,我看到虽然在该视图中绘制的形状在方向后被调整大小和修改,但没有添加到它的层。

在下面的代码中,我添加了一个子视图(包含红色矩形)和一个图层(包含一个对角线到内部矩形)添加到我的图表视图uiview。

class ChartView: UIView {
override func drawRect(rect: CGRect) {
    let h = rect.height
    let w = rect.width
    var color:UIColor = UIColor.blackColor()
    let layer = CAShapeLayer()
    var drect = CGRect(x: (w * 0.25),y: (h * 0.25),width: (w * 0.5),height: (h * 0.5))
    var bpath:UIBezierPath = UIBezierPath(rect: drect)
    let view1 = UIView(frame: CGRect(x: (w * 0.1),y: (h * 0.1),width: (w * 0.2),height: (h * 0.2)))
    view1.backgroundColor = UIColor.redColor()
    self.addSubview(view1)
    var gridPath = CGPathCreateMutable()
    CGPathMoveToPoint(gridPath, nil, (w * 0.25), (h * 0.25))
    CGPathAddLineToPoint(gridPath, nil, (w * 0.25) + (w * 0.5), (h * 0.25) + (h * 0.5))
    layer.path = gridPath
    layer.strokeColor = UIColor.blackColor().CGColor
    layer.fillColor = UIColor.blackColor().CGColor
    self.layer.addSublayer(layer)
    color.set()
    bpath.stroke()
    }
}

我发现this question涉及类似的问题,但由于我是这个领域的新手,我无法完全理解它如何实施以及在何处实施。 image and its behavior after orientation change and expected behavior

0 个答案:

没有答案