97 lines
2.8 KiB
Swift
Executable File
97 lines
2.8 KiB
Swift
Executable File
//
|
|
// ImageViewController.swift
|
|
// Project30
|
|
//
|
|
// Created by TwoStraws on 20/08/2016.
|
|
// Copyright (c) 2016 TwoStraws. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
class ImageViewController: UIViewController {
|
|
weak var owner: SelectionViewController!
|
|
var image: String!
|
|
var animTimer: Timer!
|
|
|
|
var imageView: UIImageView!
|
|
var sourceImage: UIImage!
|
|
|
|
lazy var imageFilePath = Bundle.main.path(forResource: image, ofType: nil)!
|
|
lazy var imageRenderer = UIGraphicsImageRenderer(size: sourceImage.size)
|
|
|
|
|
|
override func loadView() {
|
|
super.loadView()
|
|
|
|
view.backgroundColor = UIColor.black
|
|
|
|
// create an image view that fills the screen
|
|
imageView = UIImageView()
|
|
imageView.contentMode = .scaleAspectFit
|
|
imageView.translatesAutoresizingMaskIntoConstraints = false
|
|
imageView.alpha = 0
|
|
|
|
view.addSubview(imageView)
|
|
|
|
// make the image view fill the screen
|
|
imageView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
|
|
imageView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
|
|
imageView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
|
|
imageView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true
|
|
|
|
// schedule an animation that does something vaguely interesting
|
|
animTimer = Timer.scheduledTimer(withTimeInterval: 5, repeats: true) { timer in
|
|
// do something exciting with our image
|
|
self.imageView.transform = CGAffineTransform.identity
|
|
|
|
UIView.animate(withDuration: 3) {
|
|
self.imageView.transform = CGAffineTransform(scaleX: 0.8, y: 0.8)
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
|
|
sourceImage = UIImage(contentsOfFile: imageFilePath)!
|
|
|
|
title = image.replacingOccurrences(of: "-Large.jpg", with: "")
|
|
|
|
imageView.image = imageRenderer.image { ctx in
|
|
ctx.cgContext.addEllipse(in: CGRect(origin: CGPoint.zero, size: sourceImage.size))
|
|
ctx.cgContext.closePath()
|
|
|
|
sourceImage.draw(at: CGPoint.zero)
|
|
}
|
|
}
|
|
|
|
override func viewDidAppear(_ animated: Bool) {
|
|
super.viewDidAppear(animated)
|
|
|
|
imageView.alpha = 0
|
|
|
|
UIView.animate(withDuration: 3) { [unowned self] in
|
|
self.imageView.alpha = 1
|
|
}
|
|
}
|
|
|
|
override func viewWillDisappear(_ animated: Bool) {
|
|
super.viewWillDisappear(animated)
|
|
|
|
// make the animTimer release its strong reference on this view controller
|
|
animTimer.invalidate()
|
|
}
|
|
|
|
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
|
|
let defaults = UserDefaults.standard
|
|
var currentVal = defaults.integer(forKey: image)
|
|
currentVal += 1
|
|
|
|
defaults.set(currentVal, forKey:image)
|
|
|
|
// tell the parent view controller that it should refresh its table counters when we go back
|
|
owner.dirty = true
|
|
}
|
|
}
|