小编Mur*_*ram的帖子

CALayer vs CGContext,这是一种更好的设计方法吗?

我一直在尝试iOS绘图.为了做一个实际练习,我写了一个BarChart组件.以下是类图(好吧,我不允许上传图像)所以让我用文字写.我有一个NGBarChartView,它继承自UIView有2个协议NGBarChartViewDataSource和NGBarChartViewDelegate.代码位于https://github.com/mraghuram/NELGPieChart/blob/master/NELGPieChart/NGBarChartView.m

为了绘制barChart,我创建了每个barChart作为不同的CAShapeLayer.我这样做的原因有两个,首先我可以创建一个UIBezierPath并将其附加到CAShapeLayer对象和两个,我可以通过使用[Layer hitTest]方法轻松跟踪是否触摸了barItem.该组件运行良好.但是,我对绘制barCharts的方法感到不舒服.因此这个说明.我需要以下专家意见

  1. 通过使用CAShapeLayer并创建BarItems我真的没有使用UIGraphicsContext,这是一个很好的设计吗?
  2. 我的方法将在UIView中创建几个CALayers.根据性能,是否可以在UIView中创建CALayer的数量.
  3. 如果一个好的选择是使用CGContext*方法然后,有什么正确的方法来识别是否已触摸特定路径
  4. 从动画的角度来看,例如当你点击它时,条形图闪烁,更好的是图层设计或更好的CGContext设计.

非常感谢帮助.顺便说一句,你可以自由地查看我的代码和评论.我很乐意接受任何改进的建议.

最好的,Murali

calayer cgcontext drawrect cashapelayer ios

12
推荐指数
1
解决办法
4419
查看次数

CGFloat添加错误?

我试图在我的程序中递归添加一些CGFloat值.我刚刚在一个特定场景中意识到生成的总数是不正确的.为了确保我的程序逻辑没有任何问题,我创建了一个简单的场景示例(见下文),并打印出相同的错误值.

CGFloat arr[3] = {34484000,512085280,143011440};
CGFloat sum = 0.0;
sum = arr[0] + arr[1] + arr[2];

NSLog(@"%f",sum);

int arr1[3] = {34484000,512085280,143011440};
int sum1 = 0.0;
sum1 =  arr1[0] + arr1[1] + arr1[2];

NSLog(@"%d",sum1);
Run Code Online (Sandbox Code Playgroud)

第一个NSLog打印689580736.000000 ...而正确的结果689580720.但是第二个NSLog打印正确的结果.我不确定这是一个错误还是我做错了什么.

谢谢,穆拉利

objective-c cgfloat ios xcode4

4
推荐指数
1
解决办法
1891
查看次数