1

NSView を中心にスケーリングする必要があります。CATransform3DMakeScale を使用してみましたが、ビューを隅に向かって拡大縮小することはできましたが、中央に配置することはできませんでした。レイヤーのアンカーポイントを.5、.5に設定しようとしましたが、うまくいきませんでした。scaleUnitSquareToSize を使用してみましたが、多くの作業を行わないとリセットできないように見えるという問題に遭遇しました。

最後に、NSView のスケールを 0.8 のような値に設定し、中心付近でズームアウトし、スケールを 1 に設定してリセットできるようにする必要があります。

4

3 に答える 3

3

@fyasar の回答にフレーム修正を追加しました。MacOS で動作します。

CGRect frame = layer.frame;
layer.anchorPoint = CGPointMake(.5, .5);
layer.frame = frame; // Fix the location shift caused from anchor change
于 2017-08-31T10:45:15.800 に答える
1

10.8 を要求できる場合は、NSScrollViewの関数を呼び出すことができます。

- (void)setMagnification:(CGFloat)magnification centeredAtPoint:(NSPoint)point
于 2015-10-23T01:25:01.443 に答える