var*_*run 5 math geometry ios pie-chart swift
我希望在我的iOS应用程序中有一个旋转饼图.我发现MDRotatingPieChart控件似乎完成了我需要的大部分操作.但是当我将它放入非(0,0)原点并开始拖动时,它也会改变饼图的X和Y位置.它不应该这样做.有人可以帮帮我吗?
这是相似的代码
pieChart = MDRotatingPieChart(frame: CGRect(x: 30, y: 30, width: view.frame.width + 30 , height: view.frame.width + 30 ))
Run Code Online (Sandbox Code Playgroud)
在里面MDRotatingPieChart:
override func continueTracking(_ touch: UITouch, with event: UIEvent?) -> Bool {
hasBeenDraged = true
let currentPoint = touch.location(in: self)
let deltaX = currentPoint.x - pieChartCenter.x - 15
let deltaY = currentPoint.y - pieChartCenter.y - 15
let ang = atan2(deltaY,deltaX);
let angleDifference = delta - ang
self.transform = self.transform.rotated(by: -angleDifference)
let savedTransform = slicesArray[0].labelObj?.transform
let savedTransformCenter = labelCenter.transform
for slice in slicesArray {
if(slice.labelObj != nil) {
slice.labelObj?.transform = savedTransform!.rotated(by: angleDifference)
}
}
labelCenter.transform = savedTransformCenter.rotated(by: angleDifference)
return true;
}
Run Code Online (Sandbox Code Playgroud)
首先,看起来您应该使用MDRotatingPieChart-Example 文件夹中的 MDRotatingPieChart.swift ,因为它更加现代。它仍然包含您描述的错误,并且错误的来源似乎是原始开发人员不知道frame和之间的区别bounds,根据UIView文档:
每个视图的几何形状由其
frame和bounds属性定义。该frame属性定义视图在其父视图的坐标系中的原点和尺寸。该bounds属性定义视图所看到的内部尺寸,并且几乎专门用于自定义绘图代码。
因此,要解决此问题,您可以在 createSlice 中找到以下行
mask.frame = self.frame
Run Code Online (Sandbox Code Playgroud)
并将其替换为
mask.frame = self.bounds
Run Code Online (Sandbox Code Playgroud)
PS你的代码有一行
pieChart = MDRotatingPieChart(frame: CGRect(x: 30, y: 30, width: view.frame.width + 30 , height: view.frame.width + 30 ))
Run Code Online (Sandbox Code Playgroud)
这是可疑的。您几乎永远不希望子级中的width任何一个height大于相应父级的尺寸。你可能想要
pieChart = MDRotatingPieChart(frame: CGRect(x: 30, y: 30,
width: view.frame.width - 30 , height: view.frame.width - 30 ))
Run Code Online (Sandbox Code Playgroud)
甚至(如果您想要 X 和 Y 上的边距对称)
pieChart = MDRotatingPieChart(frame: CGRect(x: 30, y: 30,
width: view.frame.width - 2*30 , height: view.frame.width - 2*30 ))
Run Code Online (Sandbox Code Playgroud)
反而。
| 归档时间: |
|
| 查看次数: |
176 次 |
| 最近记录: |