2016-04-23 108 views
3

当我在滚动视图中旋转视图时,它将移出滚动视图并在一些旋转/缩放手势后完全消失。只要缩放比例为1,它就可以正常工作。 与我的代码有什么关系可以避免这种情况?在UIScrollview中旋转UIView Swift

import UIKit 

class ViewController: UIViewController, UIScrollViewDelegate { 

    let scrollView = UIScrollView(frame: UIScreen.mainScreen().bounds) 
    let rotationView = UIView() 


    override func viewDidLoad() { 
     super.viewDidLoad() 

      let imageView = UIImageView() 
       view.addSubview(scrollView) 

       scrollView.delegate = self 
       scrollView.minimumZoomScale = 0.5 
       scrollView.maximumZoomScale = 2 

       let mapImage = UIImage(named: "BMS2_300.jpg") 

       imageView.frame = CGRect(origin: CGPoint(x: 0, y: 0), size:mapImage!.size) 
       imageView.image = mapImage 

       let rotationViewframe = CGRectMake(0, 0, imageView.frame.size.width, imageView.frame.size.height) 
       rotationView.frame = rotationViewframe 

       rotationView.addSubview(imageView) 
       //rotationView.sizeToFit() 

       scrollView.addSubview(rotationView) 
       scrollView.contentSize = CGSize(width: rotationView.bounds.width, height: rotationView.bounds.height) 
       scrollView.bringSubviewToFront(rotationView) 
       scrollView.contentOffset = CGPoint(x: rotationView.frame.width/2, y: rotationView.frame.height/2) 

      let mapRotGestureRecognizer = UIRotationGestureRecognizer(target: self, action: #selector(ViewController.rotateMap(_:))) 
       rotationView.addGestureRecognizer(mapRotGestureRecognizer) 

    } 

    func rotateMap(sender: UIRotationGestureRecognizer) { 
     let radians = sender.rotation 

     if let senderView = sender.view { 
      senderView.transform = CGAffineTransformRotate(senderView.transform, radians) 
      sender.rotation = 0 
     } 

    } 


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

    func scrollViewDidEndZooming(scrollView: UIScrollView, withView view: UIView?, atScale scale: CGFloat) { 
     scrollView.contentSize = rotationView.frame.size 
    } 

回答

1

的解决方案是增加了滚动下一个额外的UIView,因此新holderView是滚动视图和rotatonView的holderView的子视图的子视图。

+0

谢谢,这节省了我一些时间! – cleverbit