У меня есть UIScrollView, определенный на моей раскадровке, с выходом. Этот scrollview получает UIImageView, добавленный к нему через код (а не на раскадровку). Когда я запускаю приложение, изображение растягивается из аспекта. Как только я коснусь изображения, оно привязывается к соответствующему соотношению сторон.UIImageView в формате ScrollView не работает
Что здесь происходит ?!
@IBOutlet var scrollView: UIScrollView!
var imageView = UIImageView()
var selectedImage: UIImage!
override func viewDidLoad() {
super.viewDidLoad()
scrollView.delegate = self
imageView.frame = CGRectMake(0, 0, scrollView.frame.size.width, scrollView.frame.size.height)
imageView.image = selectedImage
imageView.contentMode = .ScaleAspectFit
imageView.userInteractionEnabled = true
scrollView.contentMode = .ScaleAspectFit
scrollView.addSubview(imageView)
let scrollViewFrame = scrollView.frame
let scaleWidth = scrollViewFrame.size.width/scrollView.contentSize.width
let scaleHeight = scrollViewFrame.size.height/scrollView.contentSize.height
let minScale = min(scaleHeight, scaleWidth)
scrollView.minimumZoomScale = 0.3
scrollView.maximumZoomScale = 1
scrollView.zoomScale = minScale
centerScrollViewContents()
self.closeBtn.layer.cornerRadius = CGRectGetWidth(self.closeBtn.frame)/20.0
}
После перемещения зума на всех:
ПОЧТИ ИСПРАВЛЕНО: Я редактировал код для определения imageView.frame в viewWillLayoutSubviews вместо viewDidLoad, как было предложено в ответах ниже. У меня теперь есть новая проблема - изображение не может увеличиться ... это позволяет вам увеличивать масштаб до тех пор, пока вы не отпустите свои пальцы, а затем снова вернется к исходному размеру.
Это связано с тем, что scrollView.maximumZoomScale не достаточно большой?
исправленный код:
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
imageView.frame = CGRectMake(0, 0, scrollView.frame.size.width, scrollView.frame.size.height)
}
override func viewDidLoad() {
super.viewDidLoad()
scrollView.delegate = self
//imageView.frame = CGRectMake(0, 0, scrollView.frame.size.width, scrollView.frame.size.height)
imageView.image = selectedImage
imageView.contentMode = .ScaleAspectFit
imageView.userInteractionEnabled = true
scrollView.contentMode = .ScaleAspectFit
scrollView.addSubview(imageView)
let scrollViewFrame = scrollView.frame
let scaleWidth = scrollViewFrame.size.width/scrollView.contentSize.width
let scaleHeight = scrollViewFrame.size.height/scrollView.contentSize.height
let minScale = min(scaleHeight, scaleWidth)
scrollView.minimumZoomScale = 0.3
scrollView.maximumZoomScale = 2.0
scrollView.zoomScale = minScale
centerScrollViewContents()
self.closeBtn.layer.cornerRadius = CGRectGetWidth(self.closeBtn.frame)/20.0
}
Вы можете оставить снимок экрана для лучшего понимания. –
Да, так будет: – Charlie