NSAffineTransform在Mac OS X 10.11中是否有不同的坐标系?

时间:2015-10-24 09:34:04

标签: objective-c xcode macos xcode5 nsaffinetransform

我的项目在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 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。没有记录如何定位注释的规则;没有任何地方说墨迹必须与注释的原点相关,但它们确实如此。我认为Apple的某个人不小心打破了它,或者改变了他们应该如何运作的想法。

直到他们再次改变主意(或修复错误),我正在检查系统版本(使用/System/Library/CoreServices/SystemVersion.plist中的ProductVersion键)并以10.10及更早版本的旧方式执行,以及10.11及以后的非倒置原点的新方法。