简体   繁体   English

我如何从CGContextShowTextAtpoint()中的NSArray对象打印值?

[英]how i print the values from NSArray objects in CGContextShowTextAtpoint()?

I developing an application in which i want to print the values on a line interval, for that i used NSArray with multiple objects and those object i passing into CGContextShowTextAtPoint() method. 我正在开发一个应用程序,在该应用程序中我想在行间隔上打印值,因为我将NSArray与多个对象一起使用,并将那些对象传递给CGContextShowTextAtPoint()方法。 The code is. 代码是。

             CGContextMoveToPoint(ctx, 30.0, 200.0);
     CGContextAddLineToPoint(ctx, 30.0, 440.0);
         NSArray *hoursInDays = [[NSArray alloc] initWithObjects:@"0",@"1",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"11",@"12", nil];
    int intHoursInDays = 0;
    for(float y = 400.0; y >= 200.0; y-=18, intHoursInDays++)
       {   
           CGContextSetRGBStrokeColor(ctx, 2.0, 2.0, 2.0, 1.0);   
           CGContextMoveToPoint(ctx, 28, y);
           CGContextAddLineToPoint(ctx, 32, y);
           CGContextSelectFont(ctx, "Helvetica", 12.0, kCGEncodingMacRoman);
           CGContextSetTextDrawingMode(ctx, kCGTextFill);
           CGContextSetRGBFillColor(ctx, 0, 255, 255, 1);
           CGAffineTransform xform = CGAffineTransformMake(
                                                              1.0,  0.0,
                                                           0.0, -1.0,
                                                           0.0,  0.0);
           CGContextSetTextMatrix(ctx, xform);
           NSString *arrayDataForYAxis = [hoursInDays objectAtIndex:intHoursInDays];
           CGContextShowTextAtPoint(ctx, 10.0, y+20, [arrayDataForYAxis UTF8String], strlen((char *)arrayDataForYAxis));
           CGContextStrokePath(ctx);
                    }

The above code is executed but it given me output is {oo, 1o,2o,...........11}, i want the output is {0,1,2,3...........11,12}. 上面的代码已执行,但给我的输出是{oo,1o,2o,........... 11},我希望输出是{0,1,2,3 ..... ...... 11,12}。 The above code given me one extra character "o" after single digit.I think the problem i meet near the parameters type casting of 5th parameter inside the method of CGContextShowTextAtpoint CGContextShowTextAtpoint(). 上面的代码给了我一位数字后一个额外的字符“ o”。我认为我在CGContextShowTextAtpoint CGContextShowTextAtpoint()方法内部的第5个参数的参数类型转换附近遇到的问题。 How i resolve the problem of type casting for printing the objects of NSSArray in CGContextShowTextAtpoint() method?????????????? 我如何解决在CGContextShowTextAtpoint()方法中打印NSSArray对象的类型转换问题?

The problem is in your call to strlen . 问题在于您打电话给strlen Your (char *) cast does not change the fact that it's an NSString * . 您的(char *)强制转换不会改变它是NSString *的事实。

You could change it like this: 您可以这样更改:

const char *arrayDataForYAxis = [[hoursInDays objectAtIndex:intHoursInDays] UTF8String];
CGContextShowTextAtPoint(ctx, 10.0, y+20, arrayDataForYAxis, strlen(arrayDataForYAxis);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM