title: Swift: Trying to get my statusbar back - stopping view from writing below the safespace
body: <p>I got my function:</p>
  
  <pre><code>    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -&gt; CGSize {
          return CGSize(width: view.frame.width, height: view.frame.height)
          }
  </code></pre>
  
  <p>And I want to minus the view.frame.height, with the height of the statusbar.
  The closest thing I could find was this: <a href="https://stackoverflow.com/questions/12991935/how-to-programmatically-get-ios-status-bar-height">How to programmatically get iOS status bar height</a></p>
  
  <p>I've tried: </p>
  
  <blockquote>
    <p>view.frame.height - [UIApplication
    sharedApplication].statusBarFrame.size.height</p>
    
    <p>view.frame.height - 20.0f</p>
    
    <p>view.frame.height - 20</p>
  </blockquote>
  
  <p>But none of them works as I would hope. I believe it uses pixels, instead of points at the last one, the first two doesn't run at all.</p>
  
  <p>What I'm looking for is:
  view.frame.height - statusBarHeight</p>
  
  <p>If it helps, here is my entire viewController.</p>
  
  <pre><code>//
  //  SceneDelegate.swift
  //  BeBetterLogin 0.1
  //
  //  Created by Samuel Hauptmann van Dam on 15/03/2020.
  //  Copyright © 2020 BeBetter. All rights reserved.
  //
  
  import UIKit
  
  class SceneDelegate: UIResponder, UIWindowSceneDelegate {
  
      var window: UIWindow?
  
  
      func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
          // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
          // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
          // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
          guard let _ = (scene as? UIWindowScene) else { return }
  
  //        window = UIWindow(frame: UIScreen.main.bounds)
  //        window?.makeKeyAndVisible()
  
  
              let layout = UICollectionViewFlowLayout()
              layout.scrollDirection = .horizontal
              layout.minimumLineSpacing = 0
              window?.rootViewController = HomeController(collectionViewLayout: layout)
              window?.makeKeyAndVisible()
  
  
      }
  
      func sceneDidDisconnect(_ scene: UIScene) {
          // Called as the scene is being released by the system.
          // This occurs shortly after the scene enters the background, or when its session is discarded.
          // Release any resources associated with this scene that can be re-created the next time the scene connects.
          // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead).
      }
  
      func sceneDidBecomeActive(_ scene: UIScene) {
          // Called when the scene has moved from an inactive state to an active state.
          // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
      }
  
      func sceneWillResignActive(_ scene: UIScene) {
          // Called when the scene will move from an active state to an inactive state.
          // This may occur due to temporary interruptions (ex. an incoming phone call).
      }
  
      func sceneWillEnterForeground(_ scene: UIScene) {
          // Called as the scene transitions from the background to the foreground.
          // Use this method to undo the changes made on entering the background.
      }
  
      func sceneDidEnterBackground(_ scene: UIScene) {
          // Called as the scene transitions from the foreground to the background.
          // Use this method to save data, release shared resources, and store enough scene-specific state information
          // to restore the scene back to its current state.
      }
  
  
  }
  
  
  </code></pre>
  
  <p>And my SceneDelegate.</p>
  
  <pre><code>//
  //  SceneDelegate.swift
  //  BeBetterLogin 0.1
  //
  //  Created by Samuel Hauptmann van Dam on 15/03/2020.
  //  Copyright © 2020 BeBetter. All rights reserved.
  //
  
  import UIKit
  
  class SceneDelegate: UIResponder, UIWindowSceneDelegate {
  
      var window: UIWindow?
  
  
      func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
          // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
          // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
          // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
          guard let _ = (scene as? UIWindowScene) else { return }
  
  //        window = UIWindow(frame: UIScreen.main.bounds)
  //        window?.makeKeyAndVisible()
  
  
              let layout = UICollectionViewFlowLayout()
              layout.scrollDirection = .horizontal
              layout.minimumLineSpacing = 0
  //            window?.rootViewController = HomeController(collectionViewLayout: layout)
  //            window?.makeKeyAndVisible()
  
  
      }
  
      func sceneDidDisconnect(_ scene: UIScene) {
          // Called as the scene is being released by the system.
          // This occurs shortly after the scene enters the background, or when its session is discarded.
          // Release any resources associated with this scene that can be re-created the next time the scene connects.
          // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead).
      }
  
      func sceneDidBecomeActive(_ scene: UIScene) {
          // Called when the scene has moved from an inactive state to an active state.
          // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
      }
  
      func sceneWillResignActive(_ scene: UIScene) {
          // Called when the scene will move from an active state to an inactive state.
          // This may occur due to temporary interruptions (ex. an incoming phone call).
      }
  
      func sceneWillEnterForeground(_ scene: UIScene) {
          // Called as the scene transitions from the background to the foreground.
          // Use this method to undo the changes made on entering the background.
      }
  
      func sceneDidEnterBackground(_ scene: UIScene) {
          // Called as the scene transitions from the foreground to the background.
          // Use this method to save data, release shared resources, and store enough scene-specific state information
          // to restore the scene back to its current state.
      }
  
  
  }
  
  </code></pre>