Я пытаюсь выяснить, как добавить возможности пинч / масштабирования к imageView, но конкретно к тому, который я добавил в scrollView программно.Мне удалось найти несколько отличных примеров для SO, чтобы сжимать и масштабировать изображение, используя представление прокрутки с viewForZooming, но в этом случае мне пришлось возвращать представление изображения сжимаемым и масштабируемым, что не работает, если я возвращаю его программно.
Моя конечная цель состоит в том, чтобы иметь массив изображений, где пользователь может прокручивать влево и вправо, чтобы увидеть все изображения и иметь возможность увеличивать их, в основном так же, как если бы они просматривали свой photoStream.Я нашел хороший учебник по динамическому добавлению изображений для прокрутки здесь https://www.codementor.io/taiwoadedotun/ios-swift-implementing-photos-app-image-scrolling-with-scroll-views-bkbcmrgz5#comments-bkbcmrgz5, но я не понимаю, как добавить viewForZooming, поскольку представления изображений динамически обрабатываются .addSubview в цикле.
Я создалНебольшой пример с представлением коллекции 0-n изображений, связанных с постом.После касания collectionViewCell с изображением появляется скрытый scrollView с новым динамическим UIImageView, добавленным в качестве subView.Все отлично работает, но я не знаю, как добавить пинч / зум сейчас.
@objc func imageTapped(_ sender: UITapGestureRecognizer) {
print("BlipeFile Image Tapped")
let imageView = sender.view as! UIImageView
let newImageView = UIImageView(image: imageView.image)
//newImageView.frame = UIScreen.main.bounds
newImageView.contentMode = .scaleAspectFit
newImageView.clipsToBounds = true
newImageView.layer.borderColor = UIColor.gray.cgColor
newImageView.layer.borderWidth = 3.0
newImageView.frame = self.view.frame
newImageView.backgroundColor = .black
newImageView.isUserInteractionEnabled = true
newImageView.image = imageView.image
let tap = UITapGestureRecognizer(target: self, action: #selector(dismissFullscreenImage))
newImageView.addGestureRecognizer(tap)
scroller.isHidden = false
scroller.addSubview(newImageView)
}
@objc func dismissFullscreenImage(_ sender: UITapGestureRecognizer) {
scroller.isHidden = true
self.navigationController?.isNavigationBarHidden = false
self.tabBarController?.tabBar.isHidden = false
sender.view?.removeFromSuperview()
}
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return image //Can't return dynamically created newImageView?
}