Имеет ли 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 и позже.