我有一个包含NSImageView的NSScrollView,它会根据各种因素调整大小。调整大小后,通常会更改图像,因此将NSScrollView滚动到顶部。这很好。但是,当我再次开始滚动NSScrollView时,它会移动几个像素,然后(大部分时间)跳到滚动的底部。跳转一次之后,它会正常工作,直到我再次将滚动条移到顶部。这让我发疯。我真正在做的是这样的:

[_imageView setImage: anNSImage];

NSRect frame;

NSSize imageSize = [anNSImage] size];
frame.size = imageSize;
frame.origin = NSZeroPoint;

[_imageView setFrame: frame];
[[_mainScrollview contentView] scrollToPoint: NSMakePoint(0, [_imageView frame].size.height - [_mainScrollview frame].size.height)];

最佳答案

尼克,感谢您的代码。
我修改了您的代码,现在效果很好。
首先,您需要将垂直滚动条滚动到顶部。其次,滚动内容 View 。

    // Scroll the vertical scroller to top
    if ([_scrollView hasVerticalScroller]) {
        _scrollView.verticalScroller.floatValue = 0;
    }

    // Scroll the contentView to top
    [_scrollView.contentView scrollToPoint:NSMakePoint(0, ((NSView*)_scrollView.documentView).frame.size.height - _scrollView.contentSize.height)];

10-07 19:56
查看更多