Open2

アプリ作成中の知見

IKEHIKEH
  • UIImageViewにidentifierをつけてやればOK
let IMAGE_VIEW_IDENTIFIER = "imageview-identifier"
import UIKit
import Hero

class ViewController: UIViewController {

    // MARK: - Properties
    
    private lazy var imageView: UIImageView = {
        let iv = UIImageView()
        iv.contentMode = .scaleAspectFill
        iv.clipsToBounds = true
        iv.layer.cornerRadius = 20
        iv.image = UIImage(named: "01")
        iv.hero.id = IMAGE_VIEW_IDENTIFIER
        
        let tap = UITapGestureRecognizer(target: self, action: #selector(handleImageViewTapped))
        iv.addGestureRecognizer(tap)
        iv.isUserInteractionEnabled = true
        return iv
    }()
    
    // MARK: - Lifecycle
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        view.backgroundColor = .systemGray
        
        configureUI()
    }
    
    // MARK: - Selectors
    
    @objc func handleImageViewTapped() {
        let nextViewController = ViewController2()
        nextViewController.modalPresentationStyle = .fullScreen
        self.present(nextViewController, animated: true, completion: nil)
    }
    
    // MARK: - Helpers
    
    func configureUI() {
        view.addSubview(imageView)
        imageView.centerX(inView: view)
        imageView.anchor(top: view.topAnchor, paddingTop: 20)
        imageView.setDimensions(width: 100, height: 100)
    }
}
import UIKit

class ViewController2: UIViewController {

    // MARK: - Properties
    
    private lazy var imageView: UIImageView = {
        let iv = UIImageView()
        iv.contentMode = .scaleAspectFill
        iv.clipsToBounds = true
        iv.layer.cornerRadius = 20
        iv.image = UIImage(named: "01")
        iv.hero.id = IMAGE_VIEW_IDENTIFIER
        
        let tap = UITapGestureRecognizer(target: self, action: #selector(handleImageViewTapped))
        iv.addGestureRecognizer(tap)
        iv.isUserInteractionEnabled = true
        return iv
    }()
    
    // MARK: - Lifecycle
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        view.backgroundColor = .systemGray
        
        configureUI()
    }
    
    // MARK: - Selectors
    
    @objc func handleImageViewTapped() {
        self.dismiss(animated: true, completion: nil)
    }
    
    // MARK: - Helpers
    
    func configureUI() {
        self.hero.isEnabled = true
        
        view.addSubview(imageView)
        imageView.center(inView: view)
        imageView.anchor(left: view.leftAnchor, right: view.rightAnchor)
    }
}