Skip to content
This repository has been archived by the owner on Nov 24, 2021. It is now read-only.

Commit

Permalink
Feature/pinch to zoom (#44)
Browse files Browse the repository at this point in the history
* Update gitignore with appcode files

* Add a scrollView and add the imageview on that

* Pinch to zoom! ✨👌

* Declare scrollView lazily 😴

* Cleanup unnecessary functionality

* Add the pbxproj to git again

* Add pbxproj

* Simplify gitignore

* Zoom image consdering the image size

* Calculate maximumZoomscale from the shown size of the image

* Set the maxZoomFactor on the lazy init of the scrollView
  • Loading branch information
marijnschilling committed Jun 27, 2016
1 parent 07585d5 commit c41496f
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 1 deletion.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,6 @@ DerivedData
# CocoaPods
Pods
*.lock

# AppCode
.idea
Empty file modified Demo.xcodeproj/project.pbxproj
100755 → 100644
Empty file.
48 changes: 47 additions & 1 deletion Source/ViewerItemController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,25 @@ class ViewerItemController: UIViewController {

var indexPath: NSIndexPath?

lazy var scrollView: UIScrollView = {
var vWidth = self.view.frame.width
var vHeight = self.view.frame.height

let scrollView = UIScrollView()
scrollView.delegate = self
scrollView.frame = CGRectMake(0, 0, vWidth, vHeight)
scrollView.backgroundColor = UIColor.clearColor()
scrollView.alwaysBounceVertical = false
scrollView.alwaysBounceHorizontal = false
scrollView.showsVerticalScrollIndicator = true
scrollView.flashScrollIndicators()
scrollView.minimumZoomScale = 1.0
scrollView.maximumZoomScale = self.maxZoomScale()
scrollView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]

return scrollView
}()

lazy var imageView: UIImageView = {
let view = UIImageView(frame: UIScreen.mainScreen().bounds)
view.backgroundColor = UIColor.clearColor()
Expand Down Expand Up @@ -82,17 +101,37 @@ class ViewerItemController: UIViewController {
self.movieContainer.image = viewerItem.placeholder
self.imageView.image = viewerItem.placeholder
self.movieContainer.frame = viewerItem.placeholder.centeredFrame()

self.changed = false
}
}
}

func maxZoomScale() -> CGFloat {

guard let image = self.imageView.image else { return 0 }

var widthFactor = CGFloat(0.0)
var heightFactor = CGFloat(0.0)
if image.size.width > self.view.bounds.width {
widthFactor = image.size.width / self.view.bounds.width
}
if image.size.height > self.view.bounds.height {
heightFactor = image.size.height / self.view.bounds.height
}

return max(widthFactor, heightFactor)
}

override func viewDidLoad() {
super.viewDidLoad()

self.view.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
self.view.backgroundColor = UIColor.blackColor()
self.view.addSubview(self.imageView)

self.scrollView.addSubview(self.imageView)

self.view.addSubview(self.scrollView)
self.view.addSubview(self.movieContainer)

self.view.addSubview(self.playButton)
Expand Down Expand Up @@ -212,6 +251,13 @@ class ViewerItemController: UIViewController {
}
}

extension ViewerItemController : UIScrollViewDelegate {

func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
return self.imageView
}
}

extension ViewerItemController: MovieContainerDelegate {
func movieContainerDidStartedPlayingMovie(movieContainer: MovieContainer) {
self.playIfNeeded()
Expand Down

0 comments on commit c41496f

Please sign in to comment.