J'ai une sous-classe UIView (TraceView) qui mesure 200 de large sur 100 et j'essaie de dessiner pixel par pixel. Dans ce cas, j'essaie de tracer une ligne horizontale bleue qui traverse 75% de la largeur. Au lieu de cela, je reçois deux lignes bleues verticales (une au bord, une au milieu), qui vont à 75% du haut. Il semble que le CGLayer que j'ai utilisé ait été tourné de 90 degrés et rétréci de 50%. Que puis-je faire pour corriger cela?CGLayer dans le mauvais sens
En haut du fichier .m:
#define WORLD_WIDTH 200
#define WORLD_HEIGHT 100
#define ABGR_BYTES 4
@implementation TraceView
int theImage[WORLD_WIDTH][WORLD_HEIGHT];
Redéfinition drawRect:
- (void)drawRect:(CGRect)rect {
CGContextRef theViewContext = UIGraphicsGetCurrentContext();
CGLayerRef theCGLayer = CGLayerCreateWithContext(theViewContext, rect.size, nil);
CGContextRef theCGLayerContext = CGLayerGetContext(theCGLayer);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef bitmapContext = CGBitmapContextCreate(theImage, WORLD_WIDTH, WORLD_HEIGHT, 8, WORLD_WIDTH * ABGR_BYTES, colorSpace, kCGImageAlphaPremultipliedLast);
// is ABGR
for(int i=0;i<150;i++) {
theImage[i][0]=0xFFFF0000;
}
CGImageRef image = CGBitmapContextCreateImage(bitmapContext);
CGContextDrawImage(theCGLayerContext, rect, image);
CGContextDrawLayerInRect(theViewContext, rect, theCGLayer);
}