2017-04-25 40 views
1

编辑:我已更新问题代码,以便它可以帮助任何人。Swift3放大如何更改UICollectionView框架大小捏?

我有一个scrollViewUICollectionViewCell,但不能让缩放工作在模拟器与捏。我可以通过手动缩放视图来实现这一点,但当用户捏合放大时,我需要将图像视图框更改为全尺寸。现在它的大小可以填充帧宽设置为屏幕宽度和帧高设置为屏幕高度。我需要动态地改变帧的宽度,使其等于帧的高度,因为图像是方形的。

这里是我的代码:

import UIKit 

class MyCollectionViewCell: UICollectionViewCell, UIScrollViewDelegate { 

    let screenWidth = UIScreen.main.bounds.width 

    let activityIndicator: UIActivityIndicatorView = { 
     let spinner = UIActivityIndicatorView() 
     spinner.activityIndicatorViewStyle = .white 
     spinner.color = Constants.APP_SPINNER_COLOR 
     spinner.hidesWhenStopped = true 
     return spinner 
    }() 

    var zoomScrollView: UIScrollView = { 
     let scrollView = UIScrollView() 
     scrollView.backgroundColor = .white 
     scrollView.minimumZoomScale = 1.0 
     scrollView.maximumZoomScale = 6.0 
     scrollView.clipsToBounds = true 
     scrollView.isUserInteractionEnabled = true 
     scrollView.translatesAutoresizingMaskIntoConstraints = false 
     return scrollView 
    }() 

    var itemImageView: UIImageView = { 
     let imageView = UIImageView() 
     imageView.contentMode = .scaleAspectFit 
     imageView.translatesAutoresizingMaskIntoConstraints = false 
     imageView.backgroundColor = .white 
     imageView.isUserInteractionEnabled = true 
     return imageView 
    }() 

    func viewForZooming(in zoomScrollView: UIScrollView) -> UIView? { 
     return itemImageView 
    } 

    override init(frame: CGRect) { 
     super.init(frame: frame) 

     zoomScrollView.delegate = self 

     contentView.backgroundColor = .white 

     contentView.addSubview(zoomScrollView) 

     zoomScrollView.addSubview(itemImageView) 

     itemImageView.addSubview(activityIndicator) 


    zoomImageView.frame = CGRect(x:0, y:0, width: screenWidth, height: screenHeight) 

    zoomScrollView.frame = itemImageView.frame 

     activityIndicator.anchorCenterXToSuperview() 
     activityIndicator.anchorCenterYToSuperview()  
    } 

    required init?(coder aDecoder: NSCoder) { 
      fatalError("init(coder:) has not been implemented") 
     } 
} 
+0

什么是ZoomimageView和Zoomscrollview –

回答

1

此处制作滚动视图的简单演示。

注:不给任何约束图像视图

下面的代码了滚动:

import UIKit 

class ViewController: UIViewController,UIScrollViewDelegate { 

    var imgDemo: UIImageView = { 
     let img = UIImageView() 
     img.contentMode = .scaleAspectFill 
     img.isUserInteractionEnabled = true 
     return img 
    }() 


    var scrollView:UIScrollView = { 
     let scroll = UIScrollView() 
     scroll.maximumZoomScale = 4.0 
     scroll.minimumZoomScale = 0.25 
     scroll.clipsToBounds = true 
     return scroll 
    }() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     imgDemo.frame = CGRect(x: 0, y: 0, width: view.frame.size.width, height: view.frame.size.height) 
     imgDemo.image = UIImage(named: "5.jpg") 
     scrollView.delegate = self 
     scrollView.frame = imgDemo.frame 
     scrollView.addSubview(imgDemo) 
     view.addSubview(scrollView) 
    } 

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

} 
+0

我需要这个视图来适合.scaleAspectfit,直到我捏它,然后我想它scaleAspectFill,我该怎么做? – markhorrocks

+0

Ohk然后由你自己做出来,因为我不知道该怎么做。 –

+0

我已经更新了问题,所以我的代码现在可以工作。之前缺少的是我将scrollView.userInteraction设置为false。感谢您输入框架。 – markhorrocks