【问题标题】:Make UIView scrollable and zoomable使 UIView 可滚动和可缩放
【发布时间】:2020-05-14 10:52:39
【问题描述】:

我正在尝试使 UIView 可滚动和可缩放,我嵌入了滚动视图并设置了它的委托,但它不起作用。

我希望“selectCountries”UIView 可以像图像或类似图像一样滚动和放大和缩小。

怎样才能达到这个效果?

这是我到目前为止所做的:

class ViewController: UIViewController, UIScrollViewDelegate {

    @IBOutlet var selectCountries: VTCSelectCountryView!
    @IBOutlet var scrollView: UIScrollView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        scrollView.delegate = self
        scrollView.backgroundColor = .clear

        self.selectCountries?.selectedCountries = ["ITA","USA","GBR","FRA"]
    }

    override func viewWillLayoutSubviews(){
           super.viewWillLayoutSubviews()
           scrollView.isScrollEnabled = true
           // scrollView.contentSize = CGSize(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height+60)

       }

    func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
        return self.selectCountries
    }
}

编辑 1:我尝试添加写在下面 cmets 中的值,但它仍然不能缩放和滚动视图。

class ViewController: UIViewController, UIScrollViewDelegate {

    @IBOutlet var selectCountries: VTCSelectCountryView!
    @IBOutlet var scrollView: UIScrollView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        scrollView.delegate = self
        scrollView.backgroundColor = .clear

        scrollView.minimumZoomScale = 1.0
        scrollView.maximumZoomScale = 10.0

        scrollView.bounces = true
        scrollView.bouncesZoom = true
        scrollView.contentSize = CGSize(width: selectCountries.frame.size.width, height: selectCountries.frame.size.height)
        scrollView.showsVerticalScrollIndicator = true
        scrollView.showsHorizontalScrollIndicator = true

        self.selectCountries?.selectedCountries = ["ITA","USA","GBR","FRA"]
    }

    override func viewWillLayoutSubviews(){
           super.viewWillLayoutSubviews()
           scrollView.isScrollEnabled = true
           // scrollView.contentSize = CGSize(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height+60)
       }

    func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
        return self.selectCountries
    }
}

编辑 2:这是故事板的屏幕截图

【问题讨论】:

  • @AnreaMaps 你能分享一下你的 ViewController 类的用户界面吗?
  • @HardikS 我添加了截图
  • 为什么你给UIViewUITextFieldUIScrollView这两个国家的底部限制?删除 UIViewUIScrollVIew 的不必要的底部约束,让我知道它是否有效。
  • @HardikS 我试过了,还是不行,你知道吗?

标签: ios swift swift3 swift4 iosdeployment


【解决方案1】:

您还需要设置UIScrollView的最小和最大缩放比例

viewDidLoad() 方法中设置缩放比例

scrollView.minimumZoomScale = 1.0
scrollView.maximumZoomScale = 10.0

【讨论】:

    【解决方案2】:

    设置 ZoomScale 并在您的 viewDidLoad() 中添加子视图的 contentsize

        scrollview.maximumZoomScale = 4
        scrollview.minimumZoomScale = 1.0
        scrollview.bounces = true
        scrollview.bouncesZoom = true
        scrollview.contentSize = CGSize(width: imagerepoart.frame.size.width, height: imagerepoart.frame.size.height)
        scrollview.showsVerticalScrollIndicator = true
        scrollview.showsHorizontalScrollIndicator = true
    

    【讨论】:

    • 请检查scrollview的约束是否正确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多