【问题标题】:Zoom images in ScrollView在 ScrollView 中缩放图像
【发布时间】:2017-04-25 11:33:25
【问题描述】:

我有一个滚动视图,其中包含一些图像,我水平滚动。我想使用捏合手势进行缩放。这是我正在使用的代码,但它不起作用。我似乎无法弄清楚我做错了什么。请问有什么建议吗?

let scrollView = UIScrollView(frame: CGRect(x: 0, y: 100, width: UIScreen.main.bounds.size.width , height: (UIScreen.main.bounds.size.height - 140))) var frame: CGRect = CGRect(x: 0, y: 0, width: 0, height: 0)
var subView = UIImageView()
override func viewDidLoad() {
   super.viewDidLoad()
   getOfferImages()
   swipeGesture()
   setupView()
   scrollView.delegate = self
   scrollView.minimumZoomScale = 1.0
   scrollView.maximumZoomScale = 4.0
 }
 func configureScrollView(){

   scrollView.backgroundColor = UIColor.black
   scrollView.showsHorizontalScrollIndicator = false
   scrollView.isUserInteractionEnabled = true
   scrollView.clipsToBounds = true
   scrollView.bouncesZoom = true

   pageNumberlabel.text = "1 of \(offersImagesArray.count)"
   self.view.addSubview(scrollView)

   for index in 0..<images.count {

       frame.origin.x = self.scrollView.frame.size.width * CGFloat(index)
       frame.size = self.scrollView.frame.size
       subView = UIImageView(frame: frame)
       subView.tag = 1
       subView.contentMode = .scaleToFill
       subView.isUserInteractionEnabled = true
       subView.sd_setImage(with: images[index], placeholderImage: UIImage(named:""), options: [.continueInBackground])
       self.scrollView.addSubview(subView)
   }
   self.scrollView.isPagingEnabled = true
   self.scrollView.contentSize = CGSize(width: (self.scrollView.frame.size.width *  CGFloat(images.count)), height: self.scrollView.frame.size.height)

 }
 func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
  // let image = self.view.findSubview(withTag: 1)
   return self.subView
 }

【问题讨论】:

    标签: swift xcode uiscrollview pinchzoom zooming


    【解决方案1】:

    您需要将PinchGestureRecognizer 添加到您的情节提要中,然后将其链接到如下函数。

    @IBAction func scaleImage(_ sender: UIPinchGestureRecognizer) {
        self.subView.transform = self.subView.transform.scaledBy(x: sender.scale, y: sender.scale)
        sender.scale = 1
    }
    

    注意:subView 应替换为您尝试缩放的视图。

    【讨论】:

    • 所以我尝试了这个,它确实可以识别捏合手势,但它不会缩放图像,它只是闪烁一点。
    • @Stephanie 这对你有用吗?还是您还有问题?
    • 我想缩放子视图,但问题是它只适用于滚动视图内的最后一个图像,刚才我尝试用函数内的滚动视图本身替换它,它工作,即使它是'不完全是我想要的样子。感谢您的帮助!
    • 查看另一个答案,这个答案实际上并没有使用滚动视图来缩放。
    【解决方案2】:

    1) 设置缩放比例

    scrollView.maximumZoomScale = 10
    scrollView.minimumZoomScale = 1
    

    2) 设置滚动视图委托,在 viewForZooming 中返回您的图像

    func viewForZooming(in scrollView: UIScrollView) -> UIView? {
        return myImageView
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-11
      • 2012-07-11
      • 1970-01-01
      • 2017-01-04
      • 1970-01-01
      • 2016-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多