2016-04-23 4 views
3

Когда я поворачиваю вид в прокрутке, он выходит из прокрутки и полностью исчезает после некоторых жестов вращения/увеличения. Он отлично работает, пока масштаб масштабирования равен 1. Что мне делать с моим кодом, чтобы этого избежать?Вращение UIView в UIScrollview 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 под Scrollview, так что новый holderView является подвид в Scrollview и rotatonView подвид из holderView.

+0

Спасибо, что спас меня некоторое время! – cleverbit

Смежные вопросы