ズームに問題がありますUIImageView
です。 ズームUIImageView:ズーム用のビューが呼び出されても何も起こらない
UIViewController
持って次のような構造を理解するために:
私はちょうど画像のコレクションを持っています。画面には一度に1つの画像しか表示されませんが、他の画像を見るには左右にスクロールできます。 (Appleの写真アプリのように)。これらの画像にズーム機能が必要です。
は私がUIScrollView
(画像につき1)多くを含むメイン
UIScrollView
を持っている:
これは私のUIViewController
が作動しているかです。基本的には、それぞれUIScrollView
には、UIImageView
があります。 (私はズームを可能にするためにUICollectionView
を使用しなかった:各画像をズームできるように、UIScrollView
にはUIImageView
が含まれています)。
これは、それがどのように見えるかです:
これは私がそれをやった方法です:
var counter : Int = 0
let scrollViewWidth:CGFloat = scrollView.frame.width
let scrollViewHeight:CGFloat = scrollView.frame.height
// Add images to scrollview
for object in myObjects {
// Configure the UIImageView
let imgView = UIImageView(image: object.image.value)
imgView.frame = CGRect(x:0, y:0, width:scrollViewWidth, height:scrollViewHeight)
imgView.contentMode = .scaleAspectFit
imgView.isUserInteractionEnabled = true
if let rotation = viewModel?.documents?[counter].rotation {
imgView.transform = CGAffineTransform(rotationAngle: rotation)
}
// Configure a UIScrollView for each UIImageView to allow both zooming and paging
let pageScrollView = UIScrollView(frame: CGRect(x:scrollViewWidth * CGFloat(counter), y:0, width:scrollViewWidth, height:scrollViewHeight))
pageScrollView.minimumZoomScale = 1.0
pageScrollView.maximumZoomScale = 2.0
pageScrollView.contentSize = imgView.bounds.size
pageScrollView.showsVerticalScrollIndicator = false
pageScrollView.showsHorizontalScrollIndicator = false
pageScrollView.addSubview(imgView)
self.scrollView.addSubview(pageScrollView)
counter += 1
}
// Set content size for the main UIScrollView
self.scrollView.contentSize = CGSize(width:self.scrollView.frame.width * CGFloat((viewModel?.documents)!.count), height:self.scrollView.frame.height)
は明らかに私はviewForZooming
メソッドを実装:メソッドが呼び出され、この方法は、右を返します。 UIImageView、ズームするにはピンチで何も起こりません:
/// Zoom in/out for the current UIImageView
public func viewForZooming(in scrollView: UIScrollView) -> UIView? {
// self.scrollView : main UIScrollView
if scrollView == self.scrollView {
if let childScrollView = self.scrollView.subviews[currentPageIndex] as? UIScrollView {
if let currentImageView = childScrollView.subviews[0] as? UIImageView {
return currentImageView // the UIImageView is well returned
}
}
}
return nil
}
誰かがアイデアを持っていると私は分かりません。
ありがとうございました。
あなたは 'UIPinchGestureRecognizer'も実装する必要があります。 – Poles
これをチェックしてくださいhttp://stackoverflow.com/questions/500027/how-to-zoom-in-out-an-uiimage-object-when-user-pinches-screen – Poles