4

50% 縮小したい NSScrollView があります。私は以下のコードでこれを行います:

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];

animation.fromValue = [NSNumber numberWithFloat:1.00];
animation.toValue = [NSNumber numberWithFloat:0.50];
[animation setDuration:0.20f];

[animation setFillMode:kCAFillModeForwards];
[animation setRemovedOnCompletion:NO];

[self.scrollView.layer addAnimation:animation forKey:@"drag"];

これは機能しますが、縮小されたビューの外側をクリックすると、スクロール ビューのドキュメント ビューが mousedown イベントを受け取ります。したがって、スクロール ビューとそのコンテンツは視覚的には縮小されているように見えますが、技術的にはそうではありません。

どうすればこれを行うことができますか?

ありがとう!

4

1 に答える 1

2

Layer animation acts exactly as you describe (The animations only change the appearance, not the underlying geometry.)

Try using UIView block animation and change the scroll view's transform rather than the layer's.

EDIT:

Oh. Sorry, I thought this was iOS. I guess I should have noticed that you said it was an NSView, not a UIView. I do most of my work in iOS these days, and my OSX experience is mostly from before the days of Core Animation.

I think the answer is to get the view's animation proxy and set the change on that, but I've only done a few learning exercises with animation proxies in Mac OS, so I'd have to do some digging to look up the specifics.

于 2013-02-05T00:55:17.233 に答える