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];
来看看效果:
主题是一个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];
来看看效果:
相关文章推荐
- CorePlot学习八---如何更新数据
- [摘自MSDN] ASP.Net2.0学习 [2] 主题 4 :如何:应用 ASP.NET 主题
- [摘自MSDN] ASP.Net2.0学习 [2] 主题 6 :如何:以编程方式应用 ASP.NET 主题
- Android源码学习之一-Activity是如何实现主题变化的
- 如何使用 Core Plot 的 API 帮助文档
- Android源码学习之一-Activity是如何实现主题变化的
- 聊天主题:如何用C#定制个性化的界面控件
- 主题:如何学习Hibernate
- Android源码学习之一-Activity是如何实现主题变化的
- 如何使用Core Plot绘制直方图和折线图
- 项目中如何添加CorePlot开源框架(重温Xcode4链接静态库)
- 一步一步学习OCS2007(一)--如何定制在线状态?
- 学习OCS2007 [二] 如何定制web 标签页?
- 学习OCS2007 [一] 如何定制在线状态?
- WebSphere Portal 6.x 主题和皮肤定制:实战(一)如何创建、部署、使用自定义主题
- [摘自MSDN] ASP.Net2.0学习 [2] 主题 5 :如何:禁用 ASP.NET 主题
- 【少儿软件的定制】如何吸引少儿的学习兴趣?如何提高少儿学习软件的粘度?
- Android源码学习之一-Activity是如何实现主题变化的
- 项目中如何添加CorePlot开源框架(重温Xcode链接静态库)
- 项目中如何添加CorePlot开源框架(重温Xcode链接静态库)