iOS: текст переворачивается в функции drawRect - PullRequest
0 голосов
/ 13 ноября 2018

Я использую PDFKit и создаю подкласс PDFAnnotation. Я хочу установить свой собственный отступ при создании свободной текстовой аннотации, поэтому я пытаюсь переопределить функцию drawRect, как показано ниже

- (void)drawWithBox:(PDFDisplayBox)box inContext:(CGContextRef)context {
      UIGraphicsPushContext(context);
      CGContextSaveGState(context);
      NSAttributedString * mystring = [[NSAttributedString alloc] initWithString:self.contents attributes:@{
                                                                            NSFontAttributeName: self.font,
                                                                 NSForegroundColorAttributeName: UIColor.blackColor  }];

      [mystring drawInRect:CGRectMake(self.bounds.origin.x + 10, self.bounds.origin.y + 10, self.bounds.size.width-20, self.bounds.size.height-20)];
      CGContextRestoreGState(context);
      UIGraphicsPopContext();
}

Заполнение работает хорошо, но текст вверх ногами .

enter image description here enter image description here

Я пытаюсьдобавить код переворачивания контекста, основанный на этой ссылке https://forums.developer.apple.com/thread/103683

CGContextTranslateCTM(context, 0.0, self.bounds.size.height);
CGContextScaleCTM(context, 1.0, -1.0);

после строки CGContextSaveGState(context); Но текст исчезнет !Кто-нибудь знает причину или встречает подобную проблему?Спасибо!

1 Ответ

0 голосов
/ 14 ноября 2018

Я нашел ответ, если кто-то столкнулся с той же проблемой. На самом деле CGContextTransform основывается на системе координат страницы, поэтому при использовании преобразования CGContextScaleCTM(context, 1.0, -1.0); контекст находится за пределами диапазона страниц. Нам нужно получить X1 = X2; Y1 + Y2 = 2 * (self.bounds.origin.y + self.bounds.size.height / 2), поэтому применение преобразования CGContextConcatCTM(context, CGAffineTransformMake(1, 0, 0, -1, 0.0, 2 * self.bounds.origin.y + self.bounds.size.height)); работает для меня.

...