Mad*_*dav 8 iphone cocoa-touch core-graphics bar-chart core-plot
我正在使用core-plot lib在我的应用程序中绘制条形图 
我的问题是我只想在水平方向上启用grapgh运动,以便我可以长时间看到记录,但问题是我只是想保持y轴固定在它的位置,
我怎样才能做到这一点?
等待帮助....
Ste*_*nby 22
如果您使用的是Core-Plot 0.2.2或更高版本(可能更早),那么您可以在绘图空间的委托上添加一个方法来处理以下内容:
-(CGPoint)plotSpace:(CPTPlotSpace *)space willDisplaceBy:(CGPoint)displacement {
return CGPointMake(displacement.x, 0);
}
Run Code Online (Sandbox Code Playgroud)
这会将绘图移动限制为仅水平.这假设您通过设置allowsUserInteraction = YES允许与绘图空间进行交互.
小智 15
通过在绘图空间上设置委托(即CPPlotSpaceDelegate)来限制滚动,并实现willChangePlotRangeTo方法.你可以同时做其他很酷的事情.以下是我将显示限制为象限的方法:
- (CPPlotRange *)plotSpace:(CPPlotSpace *)space
willChangePlotRangeTo:(CPPlotRange *)newRange
forCoordinate:(CPCoordinate)coordinate {
// Display only Quadrant I: never let the location go negative.
//
if (newRange.locationDouble < 0.0F) {
newRange.location = CPDecimalFromFloat(0.0);
}
// Adjust axis to keep them in view at the left and bottom;
// adjust scale-labels to match the scroll.
//
CPXYAxisSet *axisSet = (CPXYAxisSet *)self.graph.axisSet;
if (coordinate == CPCoordinateX) {
axisSet.yAxis.orthogonalCoordinateDecimal = newRange.location;
axisSet.xAxis.titleLocation = CPDecimalFromFloat(newRange. newRange.locationDouble +
(newRange.lengthDouble / 2.0F));
} else {
axisSet.xAxis.orthogonalCoordinateDecimal = newRange.location;
axisSet.yAxis.titleLocation = CPDecimalFromFloat(newRange.locationDouble +
(newRange.lengthDouble / 2.0F));
}
return newRange;
}
Run Code Online (Sandbox Code Playgroud)
请参阅:CPPlotSpace.h
小智 12
我用一种简单的方法来"禁用"垂直滚动
CPPlotRange *globalYRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromDouble(minY) length:CPDecimalFromDouble(maxY)];
plotSpace.globalYRange = globalYRange;
Run Code Online (Sandbox Code Playgroud)
对于,minY和maxY我把我显示的值,就像你看到的垂直限制,所以你不能垂直滚动
在看到你的主题后,它对我有用,所以我想用我的方式完成你的答案
Bra*_*son 10
直到最近才在Core Plot图中启用了基本的用户交互.要启用任何方向的滚动,可以将allowsUserInteraction绘图空间的属性设置为YES.
我们目前无法将这种运动锁定到一个方向.滚动操作发生在-pointingDeviceDraggedAtPoint:CPXYPlotSpace上的方法中,因此您可以子类化CPXYPlotSpace,复制其方法的实现,并将其更改为仅允许在X方向上移动.更好的是,我们非常感谢任何扩展CPXYPlotSpace功能的贡献,以增加对单向移动的支持.
小智 10
使用CorePlot 1.0 - 为了将滚动限制为仅水平和缩放,我实现了两个CPTPlotSpaceDelegate方法:Steve Tranby使用supperAly/edo42建议的修改方法.
-(CGPoint)plotSpace:(CPTPlotSpace *)space willDisplaceBy:(CGPoint)displacement
{
return CGPointMake(displacement.x, 0);
}
-(CPTPlotRange *)plotSpace:(CPTPlotSpace *)space willChangePlotRangeTo:(CPTPlotRange *)newRange forCoordinate:(CPTCoordinate)coordinate
{
if (coordinate == CPTCoordinateY) {
newRange = ((CPTXYPlotSpace*)space).yRange;
}
return newRange;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12180 次 |
| 最近记录: |