将NSImageView添加到NSScrollView

时间:2015-11-13 23:20:54

标签: swift macos nsscrollview nsimageview

我有一个尺寸约为200x2000像素的图像。我想以200x200矩形为中心显示图像,但我希望能够上下移动它。最好的我可以想象我需要将NSImageView添加到NSScrollView但我无法弄清楚这是如何,甚至是否是最好的方法。这是我开发OS X的第一天......

经过一些谷歌搜索后,我找到了this,我可以从中得到这个

public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
    View child = rv.findChildViewUnder(e.getX(), e.getY());
    if (child != null && mGestureDetector.onTouchEvent(e)) {
        Toast.makeText(MainActivity.this, "tocaste " + child, Toast.LENGTH_SHORT).show();
        return true;
    }
    return false;
}

@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {
}

@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}

但是我无法让图片显示在滚动视图中

2 个答案:

答案 0 :(得分:0)

@ lusher00:在你的例子中,你初始化了两次self.Photo,首先是init()然后是(frame:imageRect),这可能解释了为什么图像不会出现。

您可以将imageView设置为NSScrollView的documentView,如下所示:

        @IBOutlet var scrollView: NSScrollView!


        var imageRect: NSRect
        // Initialize below the imageView image with appropriate content (to adapt)
        imageView.image = NSImage.init(named:"horizon")
        imageRect = NSMakeRect(0.0, 0.0, imageView.image!.size.width, imageView.image!.size.height)
        imageView.setFrameSize(CGSize(width: imageRect.width, height: imageRect.height))
        imageView.imageScaling = NSImageScaling.ScaleNone
        scrollView.documentView = imageView
        scrollView.hasVerticalScroller = true
        scrollView.hasHorizontalScroller = true

答案 1 :(得分:-1)

只需将图片视图添加为scrollview的子视图即可。

scrollView.addSubview(imageView)

您可以设置图像视图的位置,将其置于滚动视图内。

scrollview需要知道其内容大小有多大才能滚动该区域。所以不要忘记更新scrollview的contentSize属性。

E.g。将200x200的imageView添加到scrollView,框架为200x200。将contentSize设置为400x400并调用imageView.center = scrollView.center,将使图像居中,并允许在滚动视图的200x200可见帧内围绕图像滚动。

您还可以通过检查contentOffset来获取scrollView的当前偏移量。

如果您需要在用户滚动时进行跟踪,则可以使用scrollViewDidScroll。有关其他选项,请查看docs以获取其他选项。