Custom animated transition not working when using rootview

I am trying to create a custom transition, similar to the one that is on the App Store. I used these tutorials:

https://eric-dockery283.medium.com/custom-view-transitions-like-the-new-app-store-a2a1181229b6

https://www.raywenderlich.com/2925473-ios-animation-tutorial-custom-view-controller-presentation-transitions

I have also been experimenting with using the load view to have the root view to create the view. now what I am doing is that I am using a collectionview, which I want to keep, and when an item is pressed it animate transitions to a new view controller with a larger image, simple. the problem is that when I combine it with using the loadView with view = rootView() it did not work in some scenarios.

For example: when I use the modalPresentationStyle = .fullScreen, when I press an item in the collection view the screen just goes black, and then when I press the view hierarchy it shows this:

when I remove the modalPresentationStyle = .fullScreen it does animate but it is the popover transition, which I do not want.

What I want is to have a full screen transition that is animated. here is the view controller:

import UIKit

class OtherViewController: UIViewController, UIViewControllerTransitioningDelegate {

  var data: DogArr?

  var rootView = testView1()

  override func viewDidLoad() {
    super.viewDidLoad()
    self.view.backgroundColor = .systemBackground
  }

  override func loadView() {
    view = rootView
    rootView.animalImg.image = UIImage(named: data?.image ?? "")
    rootView.dismissBtn.addTarget(self, action: #selector(dismissingBtn), for: .touchUpInside)
  }

  @objc func dismissingBtn() {
    self.dismiss(animated: true)
  }
}

class testView1: UIView {

  var animalImg: UIImageView = {
    let img = UIImageView()
    img.contentMode = .scaleAspectFit
    img.translatesAutoresizingMaskIntoConstraints = false
    return img
  }()

  var dismissBtn: UIButton = {
    let btn = UIButton()
    btn.translatesAutoresizingMaskIntoConstraints = false
    btn.setTitle("Done", for: .normal)
    btn.titleLabel?.font = UIFont.systemFont(ofSize: 25)
    btn.titleLabel?.textAlignment = .center
    btn.setTitleColor(.label, for: .normal)
    btn.contentMode = .scaleAspectFill
    return btn
  }()

  init() {
    super.init(frame: .zero)
    self.addSubview(animalImg)
    self.addSubview(dismissBtn)
    animalImg.translatesAutoresizingMaskIntoConstraints = false
    self.backgroundColor = .systemBackground

    NSLayoutConstraint.activate([
      animalImg.topAnchor.constraint(equalTo: self.topAnchor),
      animalImg.heightAnchor.constraint(equalTo: self.heightAnchor, multiplier: 0.5),
      animalImg.widthAnchor.constraint(equalTo: animalImg.heightAnchor),
      dismissBtn.topAnchor.constraint(equalTo: self.animalImg.bottomAnchor, constant: 20),
      dismissBtn.centerXAnchor.constraint(equalTo: self.dismissBtn.centerXAnchor),
      dismissBtn.widthAnchor.constraint(equalToConstant: 150),
      dismissBtn.heightAnchor.constraint(equalToConstant: 75)
    ])
  }

  required init?(coder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
  }
}

I noticed that when I remove the root view and just created everything in the view controller, it seems to work, the thing is that this is just a test for now.

The root view in a future project may be very large so I think keeping to a rootview may be a good idea. If there are any other methods similar, please share. If there is anything I can answer please ask,

Thank you