Имеет ли NSAffineTransform другую систему координат в Mac OS X 10.11?

Мой проект хорошо работает на Mac OSX 10.10/10.9, однако в 10.11 он работает некорректно с этим кодом:

[(PDFAnnotationInk*)_activeAnnotation removeBezierPath:_path];

[_activeAnnotation setBounds:bound];                           

// Lazy, redraw entire view.        

 NSAffineTransform* transform = [NSAffineTransform transform]; 

[transform translateXBy:-bound.origin.x yBy:-bound.origin.y];

 [_path transformUsingAffineTransform:transform];

[(PDFAnnotationInk*)_activeAnnotation addBezierPath:_path]; 

[[_activeAnnotation page] removeAnnotation: _activeAnnotation];     

[self addAnnotationSelector:_activeAnnotation];

Когда я изменяю это [transform translateXBy:-bound.origin.x yBy:-bound.origin.y];

в

[transform translateXBy:bound.origin.x yBy:bound.origin.y];

Приложение работает правильно на OSX 10.11, но неправильно на OSX 10.10/10.9...

Я не знаю почему, NSAffineTransform имеет другую систему координат в последней Mac OS X 10.11? Как я могу решить эту проблему, чтобы приложение было совместимо с 10.10/9 и 10.11? Благодарю.

1 ответ

Решение

У меня такая же проблема. Правила размещения аннотаций не документированы; нигде не говорится, что чернильные контуры должны быть связаны с происхождением аннотации, но это так. Я предполагаю, что кто-то в Apple либо сломал его случайно, либо передумал, как это должно работать.

Пока они снова не передумают (или не исправят ошибку), я проверяю версию системы (используя ключ ProductVersion в /System/Library/CoreServices/SystemVersion.plist) и делаю это старым способом для 10.10 и более ранних версий и новым путь с неинвертированным происхождением для 10.11 и позже.

Другие вопросы по тегам