您的位置:首页 > 移动开发 > IOS开发

CorePlot学习四--- 如何定制Core Plot主题

2014-06-18 18:17 239 查看
转载于:点击打开链接

主题是一个CPTheme子类。CPTheme提供了一系列方法,你可以覆盖其中3个方法从而实现自定义的主题:

1、-(void)applyThemeToBackground:(CPGraph*)graph;

通过传递进来的CPGraph参数,设置背景CPGraph

2、-(void)applyThemeToPlotArea:(CPPlotAreaFrame*)plotAreaFrame;

通过传递进来的CPPlotArea参数,设置PlotArea风格

3、-(void)applyThemeToAxisSet:(CPAxisSet*)axisSet;

通过传递进来的CPAxisSet参数,设置坐标系风格

下面是一个CPTheme子类的例子:

一、.h文件

.h文件很简单,申明父类为CPTheme:

#import <Foundation/Foundation.h>

#import <CorePlot/CorePlot.h>

 

@interface MyCPTheme : CPXYTheme {

 

}

 

@end

二、.m文件

1、首先我们来为背景设置一个自定义颜色渐变:

-(void)applyThemeToBackground:(CPXYGraph *)graph

{

//终点色:20%的灰度

CPColor *endColor =[CPColorcolorWithGenericGray:0.2f];

//创建一个渐变区:起点、终点都是0.2的灰度

CPGradient*graphGradient = [CPGradientgradientWithBeginningColor:endColor
endingColor:endColor];

//设置中间渐变色1,位置在30%处,颜色为30%的灰

graphGradient = [graphGradient addColorStop:[CPColorcolorWithGenericGray:0.3f]
atPosition:0.3f];

//设置中间渐变色2,位置在50%处,颜色为50%的灰

graphGradient = [graphGradient addColorStop:[CPColorcolorWithGenericGray:0.5f]
atPosition:0.5f];

//设置中间渐变色3,位置在60%处,颜色为30%的灰

graphGradient = [graphGradient addColorStop:[CPColorcolorWithGenericGray:0.3f]
atPosition:0.6f];

//渐变角度:垂直90度(逆时针)

graphGradient.angle =
90.0f;

//渐变填充

graph.fill = [CPFillfillWithGradient:graphGradient];

}

 

2、在坐标轴上画上网格线:

//在Y轴上添加平行线

-(void)applyThemeToAxisSet:(CPXYAxisSet *)axisSet {

    //设置网格线线型

    CPLineStyle*majorGridLineStyle = [CPLineStylelineStyle];

    majorGridLineStyle.lineWidth =
1.0f;

    majorGridLineStyle.lineColor = [CPColorlightGrayColor];

CPXYAxis*axis=axisSet.yAxis;

//轴标签方向:CPSignNone-无,同CPSignNegative,CPSignPositive-反向,在y轴的右边,CPSignNegative-正向,在y轴的左边

axis.tickDirection =
CPSignNegative;

//设置平行线,默认是以大刻度线为平行线位置

    axis.majorGridLineStyle =majorGridLineStyle ;

 

//如果labelingPolicy设置为CPAxisLabelingPolicyNone,majorGridLineStyle将不起作用

    //axis.labelingPolicy= CPAxisLabelingPolicyNone ;

}

 

3、设置绘图区

下面的代码在绘图区(PlotArea)填充一个灰色渐变。注意由于绘图区(PlotArea)位于背景图(Graph)的上层(参考Core Plot框架的类层次图),因此对于绘图区所做的设置会覆盖对Graph所做的设置,除非你故意在Graph的4边留白,否则看不到背景图的设置。

-(void)applyThemeToPlotArea:(CPPlotAreaFrame*)plotAreaFrame

{

//创建一个20%-50%的灰色渐变区,用于设置绘图区。

    CPGradient *gradient =[CPGradientgradientWithBeginningColor:[CPColorcolorWithGenericGray:0.2f]
endingColor:[CPColorcolorWithGenericGray:0.7f]];

    gradient.angle =
45.0f;

//渐变填充

plotAreaFrame.fill = [CPFillfillWithGradient:gradient];

}

三、应用主题

很简单,将CPTheme替换成我们自己的主题,并应用到CPGraph:

#import "MyCPTheme.h"

⋯⋯

CPTheme *theme=[[MyCPThemealloc]init];

[graphapplyTheme:theme];

 

来看看效果:





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios开发 coreplot