我正在尝试使用Brad Larson在这篇文章中的代码创建一个动态标尺。
NSInteger majorTickInterval = 5;
NSInteger totalTravelRangeInMicrons = 1000;
NSInteger minorTickSpacingInMicrons = 50;
CGFloat currentHeight = 100;
int leftEdgeForTicks = 10;
int majorTickLength = 15;
int minorTickLength = 10;
NSInteger minorTickCounter = majorTickInterval;
NSInteger totalNumberOfTicks = totalTravelRangeInMicrons / minorTickSpacingInMicrons;
CGFloat minorTickSpacingInPixels = currentHeight / (CGFloat)totalNumberOfTicks;
CGContextSetStrokeColorWithColor(context, [[UIColor blackColor] CGColor]);
for (NSInteger currentTickNumber = 0; currentTickNumber < totalNumberOfTicks; currentTickNumber++)
{
CGContextMoveToPoint(context, leftEdgeForTicks + 0.5, round(currentTickNumber * minorTickSpacingInPixels) + 0.5);
minorTickCounter++;
if (minorTickCounter >= majorTickInterval)
{
CGContextAddLineToPoint(context, round(leftEdgeForTicks + majorTickLength) + 7**.5, round(currentTickNumber * minorTickSpacingInPixels) + 0.5);
minorTickCounter = 0;
}
else
{
CGContextAddLineToPoint(context, round(leftEdgeForTicks + minorTickLength) + 0.5, round(currentTickNumber * minorTickSpacingInPixels) + 0.5);
}
}
CGContextStrokePath(context);
但问题在于它是垂直创建刻度,而不是像下面的屏幕截图中那样水平创建:
而我想要画出这样的标尺:
此外,它没有给我超过25个刻度,我已经尝试过修改代码,但仍然没有成功。
请问如何解决这个问题?
CGPoint
的坐标似乎很琐碎。试着理解代码中发生了什么,并使用更好的变量名重写它。 - MundiCGContextMoveToPoint
和CGContextAddLineToPoint
。这里有绘制标尺的坐标。正如@Mundi所写,尝试阅读并理解它,它非常简单,您可以轻松完成。 - zrzka