Как увеличить изображение помимо исходного изображения, чтобы оно создавало зеркальный эффект после увеличения? - PullRequest
0 голосов
/ 06 октября 2019

Перед увеличением

в вышеприведенном контроллере вида у меня есть два изображения в качестве подпредставлений под двумя отдельными видами прокрутки. Я хотел программно увеличить свое правое изображение, когда я укоротил масштабирование левого изображения таким образом, чтобы оно создавало зеркальный эффект.

После увеличения с помощью жеста щипка

Но я не получаю предпочтительный вывод.

Мой зум работает, но я не получаю зеркальный эффект, который я хотел

Более того, с левой стороны, как вы можете видеть, создается пустое пространство2-е изображение.

Мой код здесь

import UIKit

class ViewController: UIViewController, UIScrollViewDelegate {

@IBOutlet weak var leftScrollView: UIScrollView!

@IBOutlet weak var leftImageView: UIImageView!

@IBOutlet weak var rightScrollView: UIScrollView!

@IBOutlet weak var rightImageView: UIImageView!

var originalImage : UIImage!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.

    originalImage = #imageLiteral(resourceName: "scene")

    leftImageView.image = originalImage!.resize(withHeight: leftImageView.bounds.height)
    rightImageView.image = originalImage!.flippedHorizontally.resize(withHeight: leftImageView.bounds.height)

    leftImageView.contentMode = .scaleToFill
    rightImageView.contentMode = .scaleToFill

    leftScrollView.minimumZoomScale = 1.0
    leftScrollView.maximumZoomScale = 6.0
    // scrollView.delegate = self - it is set on the storyboard.

    rightScrollView.minimumZoomScale = 1.0
    rightScrollView.maximumZoomScale = 6.0
}

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(true)


}

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

    if(scrollView == leftScrollView)
    {
        return leftImageView
    }
    return rightImageView
}

func scrollViewDidZoom(_ scrollView: UIScrollView) {
    if(scrollView == leftScrollView)
    {
        rightScrollView.zoomScale = scrollView.zoomScale
        rightScrollView.contentOffset = CGPoint(x: -scrollView.contentOffset.x, y: scrollView.contentOffset.y)
    }
}



func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if(scrollView == leftScrollView)
    {
        rightScrollView.zoomScale = scrollView.zoomScale
        rightScrollView.contentOffset = CGPoint(x: -scrollView.contentOffset.x, y: scrollView.contentOffset.y)
    }
}

}

публичное расширение UIImage {var flippedHorizontally: UIImage {return UIImage (cgImage: self.cgImage !, масштаб: self.scale, ориентация: .upMirrored)}

func resize(withHeight newHeight: CGFloat) -> UIImage? {

    let scale = newHeight / self.size.height
    let newWidth = self.size.width * scale
    UIGraphicsBeginImageContext(CGSize(width: newWidth, height: newHeight))
    self.draw(in: CGRect(x: 0, y: 0, width: newWidth, height: newHeight))
    let newImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    return newImage
}

}

...