无法在UIScrollView中完全滚动

时间:2017-08-25 19:34:49

标签: ios swift3 uiscrollview uiimageview contentmode

我在UIScrollView中有一个UIImageView,我希望能够滚动“常规”照片尺寸的尺寸。我的问题是我可以滚动,但是当它到达照片的顶部或底部时,滚动位置不会停留,而是“反弹”并向后移动一点,并且不允许照片留在那个位置,我该如何解决这个问题呢?

这是下面的代码:

 scrollView.frame = CGRect(x: self.view.frame.width * 0, y: self.view.frame.height / 3, width: self.view.frame.width, height: self.view.frame.width)
        self.view.addSubview(scrollView)
        scrollView.delegate = self


        let image = imageView.image
        imageView.frame = CGRect(x: self.view.frame.width * 0, y: self.view.frame.height * 0, width: (image?.size.width)!, height: (image?.size.height)!)
        imageView.frame = scrollView.bounds
        imageView.contentMode = .scaleAspectFill
        scrollView.addSubview(imageView)

例如,如果您使用相机拍摄全屏照片,然后当照片显示在视图中时,整张照片在滚动时无法保持其位置。

2 个答案:

答案 0 :(得分:1)

你做了很多错事,如上所述,你应该转向自动布局和约束,但是......

让图片按照您的方式滚动:

    // set scroll view frame to be full width of view, start 1/3 of the way down from the top, and make the height the same as the width
    scrollView.frame = CGRect(x: 0, y: self.view.frame.height / 3, width: self.view.frame.width, height: self.view.frame.width)

    // add the scroll view to the view
    self.view.addSubview(scrollView)

    // use "if let" so you're not force-unwrapping optionals
    if let image = imageView.image {

        // set the imageView's frame to the size of the image
        imageView.frame = CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height)

        // add the imageView to the scroll view
        scrollView.addSubview(imageView)

        // set the contentSize of the scroll view - the "scrollable area" - to the size of the image view
        scrollView.contentSize = imageView.bounds.size
    }

答案 1 :(得分:0)

Bouncing是UIScrollView(及其子类,包括UiTableView)中的可选行为。您可以通过bounces property或Interface Builder打开/关闭它。

我通常使用便捷方法将所需的ScrollView属性捆绑在一起(或者您可以使用UIAppearance)以确保我的所有视图都具有共享行为。