2017-04-26 104 views
0

我已经尝试了许多不同的方式来实现扩大图像和捏缩放。我已经找到了关于如何在保存在我的项目中的图像的教程,但是我正在从Firebase中检索我的图像。我希望一个图像占据ProfileViewController屏幕的大约一半,其他图片可以扩展到整个页面,并且还可以缩放。我现在的代码现在可以做到这一点,但是缩放和位置不干净或不易使用。UIImageView放大和捏在UIScrollView

var newImageView: UIImageView! 



@IBAction func imageTapped(_ sender: UITapGestureRecognizer) { 
    let imageView = sender.view as! UIImageView 

    let scrollView = UIScrollView(frame: self.view.frame) 


    newImageView = UIImageView(image: imageView.image) 
    newImageView.frame = self.view.frame 
    newImageView.backgroundColor = .black 
    newImageView.contentMode = .top 
    newImageView.isUserInteractionEnabled = true 


    let tap = UITapGestureRecognizer(target: self, action: #selector(dismissFullscreenImage)) 
    scrollView.addGestureRecognizer(tap) 


    scrollView.delegate = self 
    scrollView.minimumZoomScale = 1.0 
    scrollView.maximumZoomScale = 3.0 

    scrollView.addSubview(newImageView) 

    self.view.addSubview(scrollView) 
} 

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

func dismissFullscreenImage(_ sender: UITapGestureRecognizer) { 
    sender.view?.removeFromSuperview() 
} 

profilePageView

enter image description here

+0

在截图中有什么问题在截图中有很多问题。 – KKRocks

+0

@KKRocks我还没有设计它,我只是专注于如何使每个图像单击时展开,并且能够在扩展后正确缩放。 –

+0

那你想做什么? – KKRocks

回答

0

这里是我创建滚动视图和ImageView的编程和这里IMGPHAsset,我从图库中选择图片。

在这里,我正在做的,选择一个图像,并移动到其他视图控制器,并根据我的图像尺寸调整该图像 因此,图像放大后不是模糊的。

最小缩放是imageview绑定,最大缩放是4.0。

func singleVC1() { 
     let v = UIView(frame: CGRect(x: 40, y: 50, width: self.view.frame.size.width - 80, height: view.frame.size.height - 200)) 
     let view1 = UIView(frame: CGRect(x: 0, y: 0, width: v.frame.size.width, height: v.frame.size.height/2 - 1)) 
     let scroll1 = UIScrollView.init(frame: view1.bounds) 
     let imgview = UIImageView.init(frame: (CGRect)(origin: CGPoint.zero, size: self.returnAspectSize(targetWidth: view.frame.size.width, img: img))) 
     self.setZoomScale(scrollview: scroll1, imageview: imgview) 
     imgview.image = self.getUIImage(asset: img) 
     scroll1.maximumZoomScale = 4.0; 
     scroll1.delegate = self; 
     scroll1.bounces = false 
     scroll1.contentSize = imgview.frame.size 
     scroll1.addSubview(imgview) 
     view1.layer.borderColor = UIColor.red.cgColor 
     view1.layer.borderWidth = 5.0 
     view1.addSubview(scroll1) 
     v.addSubview(view1) 

     let view2 = UIView(frame: CGRect(x: 0, y: v.frame.size.height/2+1, width: v.frame.size.width, height: v.frame.size.height/2 - 1)) 
     let scroll2 = UIScrollView.init(frame: view2.bounds) 
     let imgview1 = UIImageView.init(frame: (CGRect)(origin: CGPoint.zero, size: self.returnAspectSize(targetWidth: view.frame.size.width, img: img))) 
     imgview1.image = self.getUIImage(asset: img) 
     self.setZoomScale(scrollview: scroll2, imageview: imgview1) 
     scroll2.bounces = false 

     scroll2.maximumZoomScale = 4.0; 
     scroll2.delegate = self; 
     view2.layer.borderColor = UIColor.red.cgColor 
     view2.layer.borderWidth = 5.0 
     scroll2.contentSize = imgview1.frame.size 
     scroll2.addSubview(imgview1) 
     view2.addSubview(scroll2) 
     v.addSubview(view2) 
     self.view.addSubview(v) 
    } 
func setZoomScale(scrollview : UIScrollView, imageview : UIImageView) { 
     var minZoom = min(self.view.bounds.size.width/imageview.bounds.size.width, self.view.bounds.size.height/imageview.bounds.size.height); 

     if (minZoom > 1.0) { 
      minZoom = 1.0; 
     } 
     scrollview.minimumZoomScale = minZoom; 
     scrollview.zoomScale = minZoom; 
    } 
    func returnAspectSize(targetWidth : CGFloat, img : PHAsset) -> CGSize { 
     let img1 = self.getUIImage(asset: self.img) 
     let targetwidth = targetWidth 
     let scalefactor = (CGFloat)(targetwidth)/(CGFloat)((img1?.size.width)!) 
     let targetheight = (img1?.size.height)! * scalefactor 
     let targesize = CGSize(width: (CGFloat)(targetwidth), height: targetheight) 
     return targesize 
    } 

试试这个。我相信这会帮助你。

+0

我应该把它放入我的imageTapped手势识别器功能? –

+0

意味着你想要做什么?这工作正常吗? @hghg –

+0

我想将它添加到每张图片中,一些配置文件可能只有2-3张图片 –