Перед увеличением
в вышеприведенном контроллере вида у меня есть два изображения в качестве подпредставлений под двумя отдельными видами прокрутки. Я хотел программно увеличить свое правое изображение, когда я укоротил масштабирование левого изображения таким образом, чтобы оно создавало зеркальный эффект.
После увеличения с помощью жеста щипка
Но я не получаю предпочтительный вывод.
Мой зум работает, но я не получаю зеркальный эффект, который я хотел
Более того, с левой стороны, как вы можете видеть, создается пустое пространство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
}
}