2015-10-24 1 views
1

Mon projet fonctionne bien sur Mac OS X 10.10/10.9, mais il ne fonctionne pas correctement en 10.11 avec ce code:Est-ce que NSAffineTransform a un système de coordonnées différent dans Mac OS X 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]; 

Quand je change cette [transformer translateXBy: -bound.origin.x yBy: liØe. origine.y];

à

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

L'application fonctionne correctement sur Mac OS X 10.11, mais de façon incorrecte sur OSX 10,10/10,9 ...

Je ne sais pas pourquoi, Est-ce que NSAffineTransform ont système de coordonnées différent dans le dernier Mac OS X 10,11? Comment puis-je résoudre ce problème pour rendre l'application compatible avec 10.10/9 et 10.11? Merci.

Répondre

1

J'ai eu le même problème. Les règles de positionnement des annotations ne sont pas documentées; on ne dit nulle part que les chemins d'encre doivent être relatifs à l'origine de l'annotation, mais ils le sont. Je suppose que quelqu'un chez Apple l'a cassé accidentellement ou a changé d'avis sur la façon dont cela devrait fonctionner.

Jusqu'à ce qu'ils changent d'avis (ou corrigent le bogue), je vérifie la version du système (en utilisant la clé ProductVersion dans /System/Library/CoreServices/SystemVersion.plist) et je le fais à l'ancienne pour 10.10 et plus tôt , et la nouvelle façon avec l'origine non inversée pour 10.11 et plus tard.

+0

Moi aussi! J'espère qu'ils vont résoudre ce problème – SuperBerry