самоограничение путаницы - PullRequest
       4

самоограничение путаницы

1 голос
/ 27 февраля 2012

В этом коде

CGRect contextRect = self.bounds;

будет указывать, какая граница?прямоугольник, imageRect или весь вид iOS.

Я пытаюсь манипулировать изображением с помощью quartz2D, я создал этот код, просматривая различные примеры, а код, написанный между //, взят из руководства Apple Quartz2D для рисования текста.

Заранее спасибо, С уважением.

    - (void)drawRect:(CGRect)rect
    {
        CGSize cgs = CGSizeMake(250.0, 400.0);
        UIGraphicsBeginImageContext(cgs);

        CGRect rectangle = CGRectMake(0,0,cgs.width,cgs.height);
        CGRect imageRect = CGRectInset(rectangle, 5.4, 5.4);
        imageRect.size.height -= 100;

        UIImage *myImage = [UIImage imageNamed:@"pumpkin.jpg"]; 
        [myImage drawInRect:imageRect];    

        CGContextRef context = UIGraphicsGetCurrentContext();
        CGContextSetLineWidth(context, 10.0);
        CGContextSetRGBStrokeColor(context, 0.0, 0.0, 1.0, 1.0);
        CGContextStrokeRect(context, rectangle);

        //    

        CGRect contextRect = self.bounds;

        CGContextTranslateCTM(context, 0, contextRect.size.height);
        CGContextScaleCTM(context, 1, -1);

        float w, h;
        w = contextRect.size.width;
        h = contextRect.size.height;

        CGAffineTransform myTextTransform;
        CGContextSelectFont (context, "Helvetica-Bold", h/10, kCGEncodingMacRoman);
        CGContextSetCharacterSpacing (context, 10);
        CGContextSetTextDrawingMode (context, kCGTextFillStroke);

        CGContextSetRGBFillColor(context, 0, 1, 0, .5);
        CGContextSetRGBStrokeColor(context, 0, 0, 1, 1);
        myTextTransform =  CGAffineTransformMakeRotation(0);
        CGContextSetTextMatrix(context, myTextTransform);
        CGContextShowTextAtPoint(context, 0, 50, "Quartz 2D", 9);

        //    

        UIImage *testImg =  UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();

        [testImg drawAtPoint:CGPointMake(35, 10)];
}

1 Ответ

7 голосов
/ 27 февраля 2012

self.frame указывает координаты и размер представления в родительской системе координат представления.

self.bounds указывает координаты и размер вида в его собственной системе координат. Поэтому он всегда имеет те же width и height, что и self.frame, но имеет x и y, равные 0.

self.bounds равно CGRectMake(0, 0, self.frame.size.width, self.frame.size.height).

Так твой код:

CGRect contextRect = self.bounds;

совпадает с:

CGRect contextRect = rect;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...