[转载]core-Plot学习二 自定义CorePlot label及majorGridLine莫名其妙消失的Bug

设置corePlot可拖动:

plotSpace.allowsUserInteraction = YES;  

设置x显示的范围:

plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(8 * oneDay)length:CPTDecimalFromInt(23 * oneDay)];  

设置x轴拖动范围:

plotSpace.globalXRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(0) length:CPTDecimalFromInt(31 * oneDay)];  

禁止corePlot缩放(Self是CPTGraphHostingView):

    [self setAllowPinchScaling:NO];//禁止缩放  

自定义label:

    x.axisLabels = [self buildLabelTitle];
    x.labelingPolicy = CPTAxisLabelingPolicyNone;  

    //构建30天的label样式
    - (NSMutableSet*)buildLabelTitle
    {
        NSMutableSet *newAxisLabels = [NSMutableSet set];  

        CPTMutableTextStyle *textStyleB = [CPTMutableTextStyle textStyle];
        textStyleB.color = [CPTColor colorWithComponentRed:CPTFloat((float)0x09/0xFF) green:CPTFloat((float)0x31/0xFF) blue:CPTFloat((float)0x4A/0xFF) alpha:CPTFloat(1.0)];
        NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
        [dateFormatter setDateFormat:@"MM.dd"];  

        int n = 1;
        for ( NSUInteger i = 29; i > 0; i--) //从今起前29天
        {
            NSTimeInterval secondsPerDay = 24 * 60 * 60 * i;
            NSDate *ago = [[NSDate alloc] initWithTimeIntervalSinceNow:-secondsPerDay];
            CPTAxisLabel *newLabel = [[CPTAxisLabel alloc] initWithText:[dateFormatter stringFromDate:ago]
                                                              textStyle:textStyleB];
            [ago release];
            newLabel.tickLocation = CPTDecimalFromUnsignedInteger(n++ * oneDay);
            newLabel.offset = 5;
            [self.locationLabels addObject:[NSNumber numberWithInt:(n-1) * oneDay]];
            [newAxisLabels addObject:newLabel];
            [newLabel release];
        }  

        //今天
        CPTMutableTextStyle *textStyleW = [CPTMutableTextStyle textStyle];
        textStyleW.color = [CPTColor whiteColor];
        CPTAxisLabel *newLabel = [[CPTAxisLabel alloc] initWithText:@"今日" textStyle:textStyleW];
        newLabel.tickLocation = CPTDecimalFromUnsignedInteger(oneDay * n);
        [self.locationLabels addObject:[NSNumber numberWithInt:(n) * oneDay]];
        newLabel.offset = 5;
        [newAxisLabels addObject:newLabel];
        [newLabel release];  

        return newAxisLabels;
    }  

但是写好后发现majorGridLine不见了,之后各种折腾后终于找到原因是:

CPTAxisLabelingPolicyNone       No labels provided; user sets labels and tick locations.

设置这个属性是要自己重新定义majorGridLine位置的

所以需要使用:

    x.majorTickLocations = [NSSet setWithArray:locationLabels];  
时间: 2024-08-29 13:48:01

[转载]core-Plot学习二 自定义CorePlot label及majorGridLine莫名其妙消失的Bug的相关文章

gmock学习二 转载

Google Mock启蒙篇 [2] (Google C++ Mocking Framework for Dummies 翻译) 2011-11-22 22:34:58|  分类: C++ |  标签:google  mock  测试  |举报|字号 订阅 Setting Expectations 成功地使用Mock对象的关键是在它上面设置合适的期望.如果你设置的期望太过严格,你的测试可能会因为无关的改变而失败.如果你把期望设置的太过松驰,bugs可能会溜过去.而你需要的是你的测试可以刚好捕获你

spring 自定义标签 学习二

在上篇中写的只支持写属性,不支持标签property的写法,但是如果有时候我们还想做成支持 property的用法,则可以在xsd中增加spring 自带的xsd引用 修改xsd文件如下: <?xml version="1.0"encoding="UTF-8"?> <xsd:schema xmlns="http://www.ruishenh.com/custom/myTest" xmlns:xsd="http://ww

Core Animation学习总结

目录: The Layer Beneath The Layer Tree(图层树) The Backing Image(寄宿层) Layer Geometry(图层几何学) Visual Effects(视觉效果) Transforms(变换) Specialized Layers(专有图层) Setting Things in Motion Implicit Animations(隐式动画) Explicit Animations(显式动画) Layer Time(图层时间) Easing(缓

iOS 使用 Core Plot 绘制统计图表入门

本文转载至 http://blog.csdn.net/zhibudefeng/article/details/7677457 iOS(iPhone/iPad) 下图形组件有两个有名的,s7graphview 和 Core Plot,它们都是在 Google 上托管的代码,听说 Core Plot 比较强,因为前者仅支持曲线图,后者呢曲线图.饼图.柱状图等通吃,且较活跃.那就专注下 Core Plot 的使用.它提供了 Mac OS X 和 iOS 下的组件库,我只用到它的 iOS 图表库. Co

Asp.Net Core WebApi学习笔记(四)-- Middleware

Asp.Net Core WebApi学习笔记(四)-- Middleware 本文记录了Asp.Net管道模型和Asp.Net Core的Middleware模型的对比,并在上一篇的基础上增加Middleware功能支持. 在演示Middleware功能之前,先要了解一下Asp.Net管道模型发生了什么样的变化. 第一部分:管道模型 1. Asp.Net管道 在之前的Asp.Net里,主要的管道模型流程如下图所示: 请求进入Asp.Net工作进程后,由进程创建HttpWorkRequest对象

Swift开发学习(二):Playground

Swift开发学习:Playground 关于 对于软件用户.游戏玩家,大家一直都在提倡用户体验.其实软件开发者自己也是用户,是各种开发工具的使用者,也会喜欢用户体验做得好的工具软件.这次苹果想开发者所想,提供了一个可以玩转swift的游乐场--Playground,它为开发着提供了方便.提供了乐趣. 原文作者:Power 转载请保留此链接. Playground可以干什么 快速练习swift 不需要编译.不需要点击执行,编写代码后直接看效果 是不是比脚本语言还方便? 开发者可以通过Playgr

DjangoRestFramework学习二之序列化组件、视图组件

目录 DjangoRestFramework学习二之序列化组件.视图组件 一 序列化组件 二 视图组件(Mixin混合类) DjangoRestFramework学习二之序列化组件.视图组件 本节目录 一 序列化组件 首先按照restful规范咱们创建一些api接口,按照下面这些形式写吧: Courses --- GET ---> 查看数据----->返回所有数据列表[{},{},] Courses--- POST --->添加数据 -----> 返回添加的数据{ } course

nodejs学习二 深入了解console

上一篇我们用console.log编写了第一个程序,虽然如此简单.那么我就从它来说说Node.js中的对象. 对于学过Java .net 的人来说,对象这个词应该都很亲切,如果不觉得亲切,还是先学习一下面向对象. 我们编程中,一切皆对象.你可以把任何一个东西当做对象. 然而,Node.js中也存在对象,而console也是一种对象.既然是对象,他应该有公有的方法.正如你所看到的,log就是它的方法,貌似还是静态的. 那么console中有哪些方法呢,那我们就让他输出一下吧. 噢,原来consol

安卓学习随笔 -- 自定义标题栏

在安卓中不喜欢系统默认的标题栏,那么如何让自定义一个自己的标题栏呢. 自定义后的标题栏如下: 首先这里需要定义一个自定义的标题栏布局 title.xml文件 (里边需要两个图片这个很简单) <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fi