taler-ios

iOS apps for GNU Taler (wallet)
Log | Files | Refs | README | LICENSE

Environment+EdgeInsets.swift (1949B)


      1 //  MIT License
      2 //  Copyright 2021 alexis https://github.com/alexis-ag/swiftui_classic-tabview_show-hide
      3 //
      4 //  Permission is hereby granted, free of charge, to any person obtaining a copy of this software
      5 //  and associated documentation files (the "Software"), to deal in the Software without restriction,
      6 //  including without limitation the rights to use, copy, modify, merge, publish, distribute,
      7 //  sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
      8 //  furnished to do so, subject to the following conditions:
      9 //
     10 //  The above copyright notice and this permission notice shall be included in all copies or
     11 //  substantial portions of the Software.
     12 //
     13 //  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
     14 //  BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
     15 //  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
     16 //  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
     17 //  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
     18 //
     19 import SwiftUI
     20 
     21 struct SafeAreaEdgeInsetsKey: EnvironmentKey {
     22     static var defaultValue: EdgeInsets {
     23         let keyWindows = UIApplication.shared.windows.filter { $0.isKeyWindow }.first ??
     24                 UIApplication.shared.windows[0]
     25 
     26         return keyWindows.safeAreaEdgeInsets
     27     }
     28 }
     29 
     30 extension EnvironmentValues {
     31     ///Should only be used once UIApplication is instantiated by the system
     32     var safeAreaEdgeInsets: EdgeInsets {
     33         self[SafeAreaEdgeInsetsKey.self]
     34     }
     35 }
     36 
     37 extension UIEdgeInsets {
     38     var insets: EdgeInsets {    // TODO: right-to-left!!!
     39         EdgeInsets(top: top, leading: left, bottom: bottom, trailing: right)
     40     }
     41 }
     42 
     43 extension UIWindow {
     44     var safeAreaEdgeInsets: EdgeInsets {
     45         safeAreaInsets.insets
     46     }
     47 }