我正在尝试创建从我从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