├── screenshots └── demo.mp4 ├── Demo ├── Assets.xcassets │ ├── Contents.json │ ├── AccentColor.colorset │ │ └── Contents.json │ └── AppIcon.appiconset │ │ └── Contents.json ├── Preview Content │ └── Preview Assets.xcassets │ │ └── Contents.json ├── DemoApp.swift ├── Tools │ └── TabViewManager.swift ├── TabViews │ ├── ThirdView.swift │ ├── FourthView.swift │ ├── SecondView.swift │ └── FirstView.swift └── ContentView.swift ├── HidableTabView.xcodeproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── xcuserdata │ └── AliMert.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── xcshareddata │ └── xcschemes │ │ ├── HidableTabView.xcscheme │ │ └── Demo.xcscheme └── project.pbxproj ├── HidableTabView ├── ViewModifiers │ ├── ShowTabBar.swift │ └── HiddenTabBar.swift └── Extensions │ ├── UIView+Extensions.swift │ ├── View+Extensions.swift │ └── UITabBar+Extensions.swift ├── Package.swift └── README.md /screenshots/demo.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AliMert/HidableTabView-SwiftUI/HEAD/screenshots/demo.mp4 -------------------------------------------------------------------------------- /Demo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Demo/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /HidableTabView.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Demo/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Demo/DemoApp.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DemoApp.swift 3 | // HidableTabView 4 | // 5 | // Created by Ali Mert Özhayta on 10.05.2022. 6 | // 7 | 8 | import SwiftUI 9 | 10 | @main 11 | struct DemoApp: App { 12 | var body: some Scene { 13 | WindowGroup { 14 | ContentView() 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /HidableTabView.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Demo/Tools/TabViewManager.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TabViewManager.swift 3 | // HidableTabView 4 | // 5 | // Created by Ali Mert Özhayta on 14.05.2022. 6 | // 7 | 8 | import SwiftUI 9 | 10 | class TabViewManager: ObservableObject { 11 | @Published var currentTab = 0 12 | 13 | init() { 14 | UITabBar.appearance().scrollEdgeAppearance = UITabBarAppearance.init(idiom: .unspecified) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /HidableTabView/ViewModifiers/ShowTabBar.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ShowTabBar.swift 3 | // HidableTabView 4 | // 5 | // Created by Ali Mert Özhayta on 14.05.2022. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct ShowTabBar: ViewModifier { 11 | var animated = true 12 | func body(content: Content) -> some View { 13 | return content.padding(.zero).onAppear { 14 | UITabBar.showTabBar(animated: animated) 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /HidableTabView/ViewModifiers/HiddenTabBar.swift: -------------------------------------------------------------------------------- 1 | // 2 | // HiddenTabBar.swift 3 | // HidableTabView 4 | // 5 | // Created by Ali Mert Özhayta on 14.05.2022. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct HiddenTabBar: ViewModifier { 11 | var animated = true 12 | 13 | func body(content: Content) -> some View { 14 | return content.padding(.zero).onAppear { 15 | UITabBar.hideTabBar(animated: animated) 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /HidableTabView/Extensions/UIView+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Extensions.swift 3 | // HidableTabView 4 | // 5 | // Created by Ali Mert Özhayta on 14.05.2022. 6 | // 7 | 8 | import UIKit.UIView 9 | 10 | extension UIView { 11 | 12 | func allSubviews() -> [UIView] { 13 | var allSubviews = subviews 14 | for subview in subviews { 15 | allSubviews.append(contentsOf: subview.allSubviews()) 16 | } 17 | return allSubviews 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /HidableTabView/Extensions/View+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // View+Extensions.swift 3 | // Bank 4 | // 5 | // Created by Ali Mert Özhayta on 2.05.2022. 6 | // 7 | 8 | import protocol SwiftUI.View 9 | import struct SwiftUI.AnyView 10 | 11 | //MARK: For Showing/Hiding Tab Bar 12 | 13 | public extension View { 14 | func showTabBar(animated: Bool = true) -> some View { 15 | return self.modifier(ShowTabBar(animated: animated)) 16 | } 17 | func hideTabBar(animated: Bool = true) -> some View { 18 | return self.modifier(HiddenTabBar(animated: animated)) 19 | } 20 | 21 | func shouldHideTabBar(_ hidden: Bool, animated: Bool = true) -> AnyView { 22 | if hidden { 23 | return AnyView(hideTabBar(animated: animated)) 24 | } else { 25 | return AnyView(showTabBar(animated: animated)) 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Demo/TabViews/ThirdView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ThirdView.swift 3 | // HidableTabView 4 | // 5 | // Created by Ali Mert Özhayta on 14.05.2022. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct ThirdView: View { 11 | @EnvironmentObject private var tabViewManager: TabViewManager 12 | 13 | var body: some View { 14 | VStack(spacing: 30) { 15 | Text("Never Show Tab") 16 | .font(.title) 17 | .bold() 18 | .padding() 19 | 20 | Button { 21 | tabViewManager.currentTab = 3 22 | } label: { 23 | Text("Go to Always Never Tab") 24 | } 25 | } 26 | } 27 | } 28 | 29 | struct ThirdView_Previews: PreviewProvider { 30 | static var previews: some View { 31 | ThirdView() 32 | .environmentObject(TabViewManager()) 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Demo/TabViews/FourthView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // FourthView.swift 3 | // HidableTabView 4 | // 5 | // Created by Ali Mert Özhayta on 14.05.2022. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct FourthView: View { 11 | @EnvironmentObject private var tabViewManager: TabViewManager 12 | 13 | var body: some View { 14 | VStack(spacing: 30) { 15 | Text("Always Show Tab") 16 | .font(.title) 17 | .bold() 18 | .padding() 19 | 20 | Button { 21 | tabViewManager.currentTab = 2 22 | } label: { 23 | Text("Go to Never Show Tab") 24 | } 25 | } 26 | } 27 | } 28 | 29 | struct FourthView_Previews: PreviewProvider { 30 | static var previews: some View { 31 | FourthView() 32 | .environmentObject(TabViewManager()) 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /HidableTabView.xcodeproj/xcuserdata/AliMert.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Demo.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | HidableTabView.xcscheme_^#shared#^_ 13 | 14 | orderHint 15 | 1 16 | 17 | 18 | SuppressBuildableAutocreation 19 | 20 | E18F4214282AD0EE0057864C 21 | 22 | primary 23 | 24 | 25 | E1D53AC6283175E30089FD3C 26 | 27 | primary 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /Demo/TabViews/SecondView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SecondView.swift 3 | // HidableTabView 4 | // 5 | // Created by Ali Mert Özhayta on 14.05.2022. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct SecondView: View { 11 | @EnvironmentObject private var tabViewManager: TabViewManager 12 | 13 | var body: some View { 14 | VStack(spacing: 30) { 15 | Text("Second View") 16 | .font(.title) 17 | .bold() 18 | .padding() 19 | 20 | Button { 21 | tabViewManager.currentTab = 0 22 | } label: { 23 | Text("Go to First Tab") 24 | } 25 | 26 | Button { 27 | UITabBar.toogleTabBarVisibility() 28 | } label: { 29 | Text("Hide/Show Tab Bar") 30 | } 31 | 32 | } 33 | } 34 | } 35 | 36 | struct SecondView_Previews: PreviewProvider { 37 | static var previews: some View { 38 | SecondView() 39 | .environmentObject(TabViewManager()) 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version: 5.6 2 | // The swift-tools-version declares the minimum version of Swift required to build this package. 3 | 4 | import PackageDescription 5 | 6 | let package = Package( 7 | name: "HidableTabView", 8 | platforms: [SupportedPlatform.iOS("14.0")], 9 | products: [ 10 | // Products define the executables and libraries a package produces, and make them visible to other packages. 11 | .library( 12 | name: "HidableTabView", 13 | targets: ["HidableTabView"]), 14 | ], 15 | dependencies: [ 16 | // Dependencies declare other packages that this package depends on. 17 | // .package(url: /* package url */, from: "1.0.0"), 18 | ], 19 | targets: [ 20 | // Targets are the basic building blocks of a package. A target can define a module or a test suite. 21 | // Targets can depend on other targets in this package, and on products in packages this package depends on. 22 | .target( 23 | name: "HidableTabView", 24 | dependencies: [], 25 | path: "HidableTabView") 26 | ] 27 | ) 28 | -------------------------------------------------------------------------------- /Demo/TabViews/FirstView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // FirstView.swift 3 | // HidableTabView 4 | // 5 | // Created by Ali Mert Özhayta on 14.05.2022. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct FirstView: View { 11 | @EnvironmentObject private var tabViewManager: TabViewManager 12 | 13 | var body: some View { 14 | VStack(spacing: 30) { 15 | Text("First View") 16 | .font(.title) 17 | .bold() 18 | .padding() 19 | 20 | Button { 21 | tabViewManager.currentTab = 1 22 | } label: { 23 | Text("Go to Second Tab") 24 | } 25 | 26 | Button { 27 | UITabBar.toogleTabBarVisibility() 28 | } label: { 29 | Text("Hide/Show Tab Bar") 30 | } 31 | } 32 | .frame(maxWidth: .infinity, maxHeight: .infinity) 33 | .background(.blue.opacity(0.3)) 34 | } 35 | } 36 | 37 | struct FirstView_Previews: PreviewProvider { 38 | static var previews: some View { 39 | FirstView() 40 | .environmentObject(TabViewManager()) 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Hideable TabView 2 |
3 | 4 | Hide TabView any where in the SwiftUI project. 5 | 6 | Go to section: 7 | * [Installation](#installation) 8 | * [Usage](#usage) 9 | * [Demo](#demo) 10 | 11 |
12 | 13 | ## Installation 14 | 15 |

Swift Package Manager

16 | 17 |

18 | HideableTabView framework can be added to your project as a package thorught SPM.
19 |

20 | 21 |

22 |

25 |

26 |
27 | 28 | ## Usage 29 | 30 | ```swift 31 | ThirdView() 32 | .hideTabBar() // animated parameter is set to true by default 33 | ``` 34 | 35 | ```swift 36 | FourthView() 37 | .showTabBar() // animated parameter is set to true by default 38 | ``` 39 | 40 | ```swift 41 | FirstView().onAppear { 42 | UITabBar.hideTabBar(animated: false) 43 | } 44 | ``` 45 | 46 | ```swift 47 | SecondView().onAppear { 48 | UITabBar.showTabBar(animated: false) 49 | } 50 | ``` 51 | 52 | ```swift 53 | Button { 54 | UITabBar.toogleTabBarVisibility() 55 | } label: { 56 | Text("Hide/Show Tab Bar") 57 | } 58 | ``` 59 |
60 | 61 | # Demo 62 | 63 | https://user-images.githubusercontent.com/37440706/169291784-32f56800-e74a-48bb-9040-ce96aa8c4af8.mp4 64 | 65 | 66 | -------------------------------------------------------------------------------- /Demo/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "scale" : "2x", 6 | "size" : "20x20" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "scale" : "3x", 11 | "size" : "20x20" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "scale" : "2x", 16 | "size" : "29x29" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "scale" : "3x", 21 | "size" : "29x29" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "scale" : "2x", 26 | "size" : "40x40" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "scale" : "3x", 31 | "size" : "40x40" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "scale" : "2x", 36 | "size" : "60x60" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "scale" : "3x", 41 | "size" : "60x60" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "scale" : "1x", 46 | "size" : "20x20" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "scale" : "2x", 51 | "size" : "20x20" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "scale" : "1x", 56 | "size" : "29x29" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "scale" : "2x", 61 | "size" : "29x29" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "scale" : "1x", 66 | "size" : "40x40" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "scale" : "2x", 71 | "size" : "40x40" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "scale" : "2x", 76 | "size" : "76x76" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "scale" : "2x", 81 | "size" : "83.5x83.5" 82 | }, 83 | { 84 | "idiom" : "ios-marketing", 85 | "scale" : "1x", 86 | "size" : "1024x1024" 87 | } 88 | ], 89 | "info" : { 90 | "author" : "xcode", 91 | "version" : 1 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /Demo/ContentView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ContentView.swift 3 | // HidableTabView 4 | // 5 | // Created by Ali Mert Özhayta on 10.05.2022. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct ContentView: View { 11 | 12 | @ObservedObject private var tabViewManager = TabViewManager() 13 | 14 | var body: some View { 15 | TabView(selection: $tabViewManager.currentTab) { 16 | FirstView() 17 | .environmentObject(tabViewManager) 18 | .tag(0) 19 | .tabItem { 20 | Label("First View", systemImage: "house") 21 | } 22 | 23 | SecondView() 24 | .environmentObject(tabViewManager) 25 | .showTabBar() 26 | .tag(1) 27 | .tabItem { 28 | Label("Second View", systemImage: "car") 29 | } 30 | 31 | ThirdView() 32 | .environmentObject(tabViewManager) 33 | .hideTabBar(animated: false) 34 | .tag(2) 35 | .tabItem { 36 | Label("Third View", systemImage: "timer") 37 | } 38 | 39 | 40 | FourthView() 41 | .environmentObject(tabViewManager) 42 | .showTabBar(animated: false) 43 | .tag(3) 44 | .tabItem { 45 | Label("Fourth View", systemImage: "flame") 46 | } 47 | } 48 | .hideTabBar(animated: false) 49 | 50 | // MARK: Another way Change Tab Bar Visibility 51 | /* 52 | You can even change tab bar visibility from any where in the application 53 | For instance; 54 | instead of using '.hideTabBar(animated: false)', 55 | you can set it in '.onAppear' 56 | */ 57 | // .onAppear { 58 | // UITabBar.hideTabBar(animated: false) 59 | // } 60 | } 61 | } 62 | 63 | struct ContentView_Previews: PreviewProvider { 64 | static var previews: some View { 65 | ContentView() 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /HidableTabView.xcodeproj/xcshareddata/xcschemes/HidableTabView.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 50 | 51 | 57 | 58 | 59 | 60 | 62 | 63 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /HidableTabView.xcodeproj/xcshareddata/xcschemes/Demo.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 45 | 51 | 52 | 53 | 54 | 60 | 62 | 68 | 69 | 70 | 71 | 73 | 74 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /HidableTabView/Extensions/UITabBar+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UITabBar+Extensions.swift 3 | // HidableTabView 4 | // 5 | // Created by Ali Mert Özhayta on 14.05.2022. 6 | // 7 | 8 | import UIKit 9 | 10 | public extension UITabBar { 11 | 12 | // if tab View is used get tabBar 'isHidden' parameter value 13 | static func isHidden(_ completion: @escaping (Bool) -> Void) { 14 | DispatchQueue.main.async { 15 | let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene 16 | windowScene?.windows.first(where: { $0.isKeyWindow })?.allSubviews().forEach({ (v) in 17 | if let view = v as? UITabBar { 18 | completion(view.isHidden) 19 | } 20 | }) 21 | } 22 | } 23 | 24 | // if tab View is used toogle Tab Bar Visibility 25 | static func toogleTabBarVisibility(animated: Bool = true) { 26 | UITabBar.isHidden { isHidden in 27 | if isHidden { 28 | UITabBar.showTabBar(animated: animated) 29 | } 30 | else { 31 | UITabBar.hideTabBar(animated: animated) 32 | } 33 | } 34 | } 35 | 36 | // if tab View is used show Tab Bar 37 | static func showTabBar(animated: Bool = true) { 38 | DispatchQueue.main.async { 39 | let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene 40 | windowScene?.windows.first(where: { $0.isKeyWindow })?.allSubviews().forEach({ (v) in 41 | if let view = v as? UITabBar { 42 | view.setIsHidden(false, animated: animated) 43 | } 44 | }) 45 | } 46 | } 47 | 48 | // if tab View is used hide Tab Bar 49 | static func hideTabBar(animated: Bool = true) { 50 | DispatchQueue.main.async { 51 | let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene 52 | windowScene?.windows.first(where: { $0.isKeyWindow })?.allSubviews().forEach({ (v) in 53 | if let view = v as? UITabBar { 54 | view.setIsHidden(true, animated: animated) 55 | } 56 | }) 57 | } 58 | } 59 | 60 | private static func updateFrame(_ view: UIView) { 61 | if let sv = view.superview { 62 | let currentFrame = sv.frame 63 | sv.frame = currentFrame.insetBy(dx: 0, dy: 1) 64 | sv.frame = currentFrame 65 | } 66 | } 67 | 68 | // logic is implemented for hiding or showing the tab bar with animation 69 | private func setIsHidden(_ hidden: Bool, animated: Bool) { 70 | let isViewHidden = self.isHidden 71 | 72 | if animated { 73 | if self.isHidden && !hidden { 74 | self.isHidden = false 75 | Self.updateFrame(self) 76 | self.frame.origin.y = UIScreen.main.bounds.height + 200 77 | } 78 | 79 | if isViewHidden && !hidden { 80 | self.alpha = 0.0 81 | } 82 | 83 | UIView.animate(withDuration: 0.8, animations: { 84 | self.alpha = hidden ? 0.0 : 1.0 85 | }) 86 | UIView.animate(withDuration: 0.6, animations: { 87 | 88 | if !isViewHidden && hidden { 89 | self.frame.origin.y = UIScreen.main.bounds.height + 200 90 | } 91 | else if isViewHidden && !hidden { 92 | self.frame.origin.y = UIScreen.main.bounds.height - self.frame.height 93 | } 94 | }) { _ in 95 | if hidden && !self.isHidden { 96 | self.isHidden = true 97 | Self.updateFrame(self) 98 | } 99 | } 100 | } else { 101 | if !isViewHidden && hidden { 102 | self.frame.origin.y = UIScreen.main.bounds.height + 200 103 | } 104 | else if isViewHidden && !hidden { 105 | self.frame.origin.y = UIScreen.main.bounds.height - self.frame.height 106 | } 107 | self.isHidden = hidden 108 | Self.updateFrame(self) 109 | self.alpha = 1 110 | } 111 | } 112 | } 113 | -------------------------------------------------------------------------------- /HidableTabView.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 55; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | E18F4219282AD0EE0057864C /* DemoApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = E18F4218282AD0EE0057864C /* DemoApp.swift */; }; 11 | E18F421B282AD0EE0057864C /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E18F421A282AD0EE0057864C /* ContentView.swift */; }; 12 | E18F421D282AD0F00057864C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E18F421C282AD0F00057864C /* Assets.xcassets */; }; 13 | E18F4220282AD0F00057864C /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E18F421F282AD0F00057864C /* Preview Assets.xcassets */; }; 14 | E18F4229282AE4C90057864C /* View+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E18F4228282AE4C90057864C /* View+Extensions.swift */; }; 15 | E18F422B282FFBF40057864C /* FirstView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E18F422A282FFBF30057864C /* FirstView.swift */; }; 16 | E18F422D282FFF5C0057864C /* SecondView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E18F422C282FFF5B0057864C /* SecondView.swift */; }; 17 | E18F422F283000990057864C /* TabViewManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E18F422E283000990057864C /* TabViewManager.swift */; }; 18 | E18F4233283003520057864C /* ShowTabBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = E18F4232283003520057864C /* ShowTabBar.swift */; }; 19 | E18F4235283003640057864C /* HiddenTabBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = E18F4234283003640057864C /* HiddenTabBar.swift */; }; 20 | E18F4238283008520057864C /* UITabBar+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E18F4237283008520057864C /* UITabBar+Extensions.swift */; }; 21 | E18F423B283008CF0057864C /* UIView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E18F423A283008CF0057864C /* UIView+Extensions.swift */; }; 22 | E18F423D28300DCD0057864C /* ThirdView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E18F423C28300DCD0057864C /* ThirdView.swift */; }; 23 | E18F423F28300E130057864C /* FourthView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E18F423E28300E130057864C /* FourthView.swift */; }; 24 | E1D53ACD283175E30089FD3C /* HidableTabView.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E1D53AC7283175E30089FD3C /* HidableTabView.framework */; }; 25 | E1D53ACE283175E30089FD3C /* HidableTabView.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = E1D53AC7283175E30089FD3C /* HidableTabView.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 26 | E1D53AD3283176020089FD3C /* ShowTabBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = E18F4232283003520057864C /* ShowTabBar.swift */; }; 27 | E1D53AD4283176020089FD3C /* HiddenTabBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = E18F4234283003640057864C /* HiddenTabBar.swift */; }; 28 | E1D53AD5283176070089FD3C /* UITabBar+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E18F4237283008520057864C /* UITabBar+Extensions.swift */; }; 29 | E1D53AD6283176070089FD3C /* View+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E18F4228282AE4C90057864C /* View+Extensions.swift */; }; 30 | E1D53AD7283176070089FD3C /* UIView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E18F423A283008CF0057864C /* UIView+Extensions.swift */; }; 31 | /* End PBXBuildFile section */ 32 | 33 | /* Begin PBXContainerItemProxy section */ 34 | E1D53ACB283175E30089FD3C /* PBXContainerItemProxy */ = { 35 | isa = PBXContainerItemProxy; 36 | containerPortal = E18F420D282AD0EE0057864C /* Project object */; 37 | proxyType = 1; 38 | remoteGlobalIDString = E1D53AC6283175E30089FD3C; 39 | remoteInfo = HidableTabView; 40 | }; 41 | /* End PBXContainerItemProxy section */ 42 | 43 | /* Begin PBXCopyFilesBuildPhase section */ 44 | E1D53AD2283175E30089FD3C /* Embed Frameworks */ = { 45 | isa = PBXCopyFilesBuildPhase; 46 | buildActionMask = 2147483647; 47 | dstPath = ""; 48 | dstSubfolderSpec = 10; 49 | files = ( 50 | E1D53ACE283175E30089FD3C /* HidableTabView.framework in Embed Frameworks */, 51 | ); 52 | name = "Embed Frameworks"; 53 | runOnlyForDeploymentPostprocessing = 0; 54 | }; 55 | /* End PBXCopyFilesBuildPhase section */ 56 | 57 | /* Begin PBXFileReference section */ 58 | E18F4215282AD0EE0057864C /* Demo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Demo.app; sourceTree = BUILT_PRODUCTS_DIR; }; 59 | E18F4218282AD0EE0057864C /* DemoApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DemoApp.swift; sourceTree = ""; }; 60 | E18F421A282AD0EE0057864C /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; 61 | E18F421C282AD0F00057864C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 62 | E18F421F282AD0F00057864C /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; 63 | E18F4228282AE4C90057864C /* View+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "View+Extensions.swift"; sourceTree = ""; }; 64 | E18F422A282FFBF30057864C /* FirstView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FirstView.swift; sourceTree = ""; }; 65 | E18F422C282FFF5B0057864C /* SecondView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecondView.swift; sourceTree = ""; }; 66 | E18F422E283000990057864C /* TabViewManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabViewManager.swift; sourceTree = ""; }; 67 | E18F4232283003520057864C /* ShowTabBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShowTabBar.swift; sourceTree = ""; }; 68 | E18F4234283003640057864C /* HiddenTabBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HiddenTabBar.swift; sourceTree = ""; }; 69 | E18F4237283008520057864C /* UITabBar+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITabBar+Extensions.swift"; sourceTree = ""; }; 70 | E18F423A283008CF0057864C /* UIView+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIView+Extensions.swift"; sourceTree = ""; }; 71 | E18F423C28300DCD0057864C /* ThirdView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThirdView.swift; sourceTree = ""; }; 72 | E18F423E28300E130057864C /* FourthView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FourthView.swift; sourceTree = ""; }; 73 | E18F43B6283174240057864C /* Package.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = ""; }; 74 | E1D53AC7283175E30089FD3C /* HidableTabView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = HidableTabView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 75 | /* End PBXFileReference section */ 76 | 77 | /* Begin PBXFrameworksBuildPhase section */ 78 | E18F4212282AD0EE0057864C /* Frameworks */ = { 79 | isa = PBXFrameworksBuildPhase; 80 | buildActionMask = 2147483647; 81 | files = ( 82 | E1D53ACD283175E30089FD3C /* HidableTabView.framework in Frameworks */, 83 | ); 84 | runOnlyForDeploymentPostprocessing = 0; 85 | }; 86 | E1D53AC4283175E30089FD3C /* Frameworks */ = { 87 | isa = PBXFrameworksBuildPhase; 88 | buildActionMask = 2147483647; 89 | files = ( 90 | ); 91 | runOnlyForDeploymentPostprocessing = 0; 92 | }; 93 | /* End PBXFrameworksBuildPhase section */ 94 | 95 | /* Begin PBXGroup section */ 96 | E18F420C282AD0EE0057864C = { 97 | isa = PBXGroup; 98 | children = ( 99 | E18F43B6283174240057864C /* Package.swift */, 100 | E1D53AC8283175E30089FD3C /* HidableTabView */, 101 | E18F4217282AD0EE0057864C /* Demo */, 102 | E18F4216282AD0EE0057864C /* Products */, 103 | ); 104 | sourceTree = ""; 105 | }; 106 | E18F4216282AD0EE0057864C /* Products */ = { 107 | isa = PBXGroup; 108 | children = ( 109 | E18F4215282AD0EE0057864C /* Demo.app */, 110 | E1D53AC7283175E30089FD3C /* HidableTabView.framework */, 111 | ); 112 | name = Products; 113 | sourceTree = ""; 114 | }; 115 | E18F4217282AD0EE0057864C /* Demo */ = { 116 | isa = PBXGroup; 117 | children = ( 118 | E18F4218282AD0EE0057864C /* DemoApp.swift */, 119 | E18F421A282AD0EE0057864C /* ContentView.swift */, 120 | E18F4230283002340057864C /* TabViews */, 121 | E18F4239283008840057864C /* Tools */, 122 | E18F421C282AD0F00057864C /* Assets.xcassets */, 123 | E18F421E282AD0F00057864C /* Preview Content */, 124 | ); 125 | path = Demo; 126 | sourceTree = ""; 127 | }; 128 | E18F421E282AD0F00057864C /* Preview Content */ = { 129 | isa = PBXGroup; 130 | children = ( 131 | E18F421F282AD0F00057864C /* Preview Assets.xcassets */, 132 | ); 133 | path = "Preview Content"; 134 | sourceTree = ""; 135 | }; 136 | E18F4230283002340057864C /* TabViews */ = { 137 | isa = PBXGroup; 138 | children = ( 139 | E18F422A282FFBF30057864C /* FirstView.swift */, 140 | E18F422C282FFF5B0057864C /* SecondView.swift */, 141 | E18F423C28300DCD0057864C /* ThirdView.swift */, 142 | E18F423E28300E130057864C /* FourthView.swift */, 143 | ); 144 | path = TabViews; 145 | sourceTree = ""; 146 | }; 147 | E18F4231283003440057864C /* ViewModifiers */ = { 148 | isa = PBXGroup; 149 | children = ( 150 | E18F4232283003520057864C /* ShowTabBar.swift */, 151 | E18F4234283003640057864C /* HiddenTabBar.swift */, 152 | ); 153 | path = ViewModifiers; 154 | sourceTree = ""; 155 | }; 156 | E18F4236283008430057864C /* Extensions */ = { 157 | isa = PBXGroup; 158 | children = ( 159 | E18F4228282AE4C90057864C /* View+Extensions.swift */, 160 | E18F423A283008CF0057864C /* UIView+Extensions.swift */, 161 | E18F4237283008520057864C /* UITabBar+Extensions.swift */, 162 | ); 163 | path = Extensions; 164 | sourceTree = ""; 165 | }; 166 | E18F4239283008840057864C /* Tools */ = { 167 | isa = PBXGroup; 168 | children = ( 169 | E18F422E283000990057864C /* TabViewManager.swift */, 170 | ); 171 | path = Tools; 172 | sourceTree = ""; 173 | }; 174 | E1D53AC8283175E30089FD3C /* HidableTabView */ = { 175 | isa = PBXGroup; 176 | children = ( 177 | E18F4236283008430057864C /* Extensions */, 178 | E18F4231283003440057864C /* ViewModifiers */, 179 | ); 180 | path = HidableTabView; 181 | sourceTree = ""; 182 | }; 183 | /* End PBXGroup section */ 184 | 185 | /* Begin PBXHeadersBuildPhase section */ 186 | E1D53AC2283175E30089FD3C /* Headers */ = { 187 | isa = PBXHeadersBuildPhase; 188 | buildActionMask = 2147483647; 189 | files = ( 190 | ); 191 | runOnlyForDeploymentPostprocessing = 0; 192 | }; 193 | /* End PBXHeadersBuildPhase section */ 194 | 195 | /* Begin PBXNativeTarget section */ 196 | E18F4214282AD0EE0057864C /* Demo */ = { 197 | isa = PBXNativeTarget; 198 | buildConfigurationList = E18F4223282AD0F00057864C /* Build configuration list for PBXNativeTarget "Demo" */; 199 | buildPhases = ( 200 | E18F4211282AD0EE0057864C /* Sources */, 201 | E18F4212282AD0EE0057864C /* Frameworks */, 202 | E18F4213282AD0EE0057864C /* Resources */, 203 | E1D53AD2283175E30089FD3C /* Embed Frameworks */, 204 | ); 205 | buildRules = ( 206 | ); 207 | dependencies = ( 208 | E1D53ACC283175E30089FD3C /* PBXTargetDependency */, 209 | ); 210 | name = Demo; 211 | productName = HidableTabView; 212 | productReference = E18F4215282AD0EE0057864C /* Demo.app */; 213 | productType = "com.apple.product-type.application"; 214 | }; 215 | E1D53AC6283175E30089FD3C /* HidableTabView */ = { 216 | isa = PBXNativeTarget; 217 | buildConfigurationList = E1D53ACF283175E30089FD3C /* Build configuration list for PBXNativeTarget "HidableTabView" */; 218 | buildPhases = ( 219 | E1D53AC2283175E30089FD3C /* Headers */, 220 | E1D53AC3283175E30089FD3C /* Sources */, 221 | E1D53AC4283175E30089FD3C /* Frameworks */, 222 | E1D53AC5283175E30089FD3C /* Resources */, 223 | ); 224 | buildRules = ( 225 | ); 226 | dependencies = ( 227 | ); 228 | name = HidableTabView; 229 | productName = HidableTabView; 230 | productReference = E1D53AC7283175E30089FD3C /* HidableTabView.framework */; 231 | productType = "com.apple.product-type.framework"; 232 | }; 233 | /* End PBXNativeTarget section */ 234 | 235 | /* Begin PBXProject section */ 236 | E18F420D282AD0EE0057864C /* Project object */ = { 237 | isa = PBXProject; 238 | attributes = { 239 | BuildIndependentTargetsInParallel = 1; 240 | LastSwiftUpdateCheck = 1330; 241 | LastUpgradeCheck = 1330; 242 | TargetAttributes = { 243 | E18F4214282AD0EE0057864C = { 244 | CreatedOnToolsVersion = 13.3.1; 245 | }; 246 | E1D53AC6283175E30089FD3C = { 247 | CreatedOnToolsVersion = 13.3.1; 248 | }; 249 | }; 250 | }; 251 | buildConfigurationList = E18F4210282AD0EE0057864C /* Build configuration list for PBXProject "HidableTabView" */; 252 | compatibilityVersion = "Xcode 13.0"; 253 | developmentRegion = en; 254 | hasScannedForEncodings = 0; 255 | knownRegions = ( 256 | en, 257 | Base, 258 | ); 259 | mainGroup = E18F420C282AD0EE0057864C; 260 | productRefGroup = E18F4216282AD0EE0057864C /* Products */; 261 | projectDirPath = ""; 262 | projectRoot = ""; 263 | targets = ( 264 | E18F4214282AD0EE0057864C /* Demo */, 265 | E1D53AC6283175E30089FD3C /* HidableTabView */, 266 | ); 267 | }; 268 | /* End PBXProject section */ 269 | 270 | /* Begin PBXResourcesBuildPhase section */ 271 | E18F4213282AD0EE0057864C /* Resources */ = { 272 | isa = PBXResourcesBuildPhase; 273 | buildActionMask = 2147483647; 274 | files = ( 275 | E18F4220282AD0F00057864C /* Preview Assets.xcassets in Resources */, 276 | E18F421D282AD0F00057864C /* Assets.xcassets in Resources */, 277 | ); 278 | runOnlyForDeploymentPostprocessing = 0; 279 | }; 280 | E1D53AC5283175E30089FD3C /* Resources */ = { 281 | isa = PBXResourcesBuildPhase; 282 | buildActionMask = 2147483647; 283 | files = ( 284 | ); 285 | runOnlyForDeploymentPostprocessing = 0; 286 | }; 287 | /* End PBXResourcesBuildPhase section */ 288 | 289 | /* Begin PBXSourcesBuildPhase section */ 290 | E18F4211282AD0EE0057864C /* Sources */ = { 291 | isa = PBXSourcesBuildPhase; 292 | buildActionMask = 2147483647; 293 | files = ( 294 | E18F4233283003520057864C /* ShowTabBar.swift in Sources */, 295 | E18F423F28300E130057864C /* FourthView.swift in Sources */, 296 | E18F421B282AD0EE0057864C /* ContentView.swift in Sources */, 297 | E18F422D282FFF5C0057864C /* SecondView.swift in Sources */, 298 | E18F422F283000990057864C /* TabViewManager.swift in Sources */, 299 | E18F423D28300DCD0057864C /* ThirdView.swift in Sources */, 300 | E18F4219282AD0EE0057864C /* DemoApp.swift in Sources */, 301 | E18F4235283003640057864C /* HiddenTabBar.swift in Sources */, 302 | E18F4229282AE4C90057864C /* View+Extensions.swift in Sources */, 303 | E18F4238283008520057864C /* UITabBar+Extensions.swift in Sources */, 304 | E18F422B282FFBF40057864C /* FirstView.swift in Sources */, 305 | E18F423B283008CF0057864C /* UIView+Extensions.swift in Sources */, 306 | ); 307 | runOnlyForDeploymentPostprocessing = 0; 308 | }; 309 | E1D53AC3283175E30089FD3C /* Sources */ = { 310 | isa = PBXSourcesBuildPhase; 311 | buildActionMask = 2147483647; 312 | files = ( 313 | E1D53AD5283176070089FD3C /* UITabBar+Extensions.swift in Sources */, 314 | E1D53AD3283176020089FD3C /* ShowTabBar.swift in Sources */, 315 | E1D53AD7283176070089FD3C /* UIView+Extensions.swift in Sources */, 316 | E1D53AD6283176070089FD3C /* View+Extensions.swift in Sources */, 317 | E1D53AD4283176020089FD3C /* HiddenTabBar.swift in Sources */, 318 | ); 319 | runOnlyForDeploymentPostprocessing = 0; 320 | }; 321 | /* End PBXSourcesBuildPhase section */ 322 | 323 | /* Begin PBXTargetDependency section */ 324 | E1D53ACC283175E30089FD3C /* PBXTargetDependency */ = { 325 | isa = PBXTargetDependency; 326 | target = E1D53AC6283175E30089FD3C /* HidableTabView */; 327 | targetProxy = E1D53ACB283175E30089FD3C /* PBXContainerItemProxy */; 328 | }; 329 | /* End PBXTargetDependency section */ 330 | 331 | /* Begin XCBuildConfiguration section */ 332 | E18F4221282AD0F00057864C /* Debug */ = { 333 | isa = XCBuildConfiguration; 334 | buildSettings = { 335 | ALWAYS_SEARCH_USER_PATHS = NO; 336 | CLANG_ANALYZER_NONNULL = YES; 337 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 338 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; 339 | CLANG_ENABLE_MODULES = YES; 340 | CLANG_ENABLE_OBJC_ARC = YES; 341 | CLANG_ENABLE_OBJC_WEAK = YES; 342 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 343 | CLANG_WARN_BOOL_CONVERSION = YES; 344 | CLANG_WARN_COMMA = YES; 345 | CLANG_WARN_CONSTANT_CONVERSION = YES; 346 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 347 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 348 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 349 | CLANG_WARN_EMPTY_BODY = YES; 350 | CLANG_WARN_ENUM_CONVERSION = YES; 351 | CLANG_WARN_INFINITE_RECURSION = YES; 352 | CLANG_WARN_INT_CONVERSION = YES; 353 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 354 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 355 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 356 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 357 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 358 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 359 | CLANG_WARN_STRICT_PROTOTYPES = YES; 360 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 361 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 362 | CLANG_WARN_UNREACHABLE_CODE = YES; 363 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 364 | COPY_PHASE_STRIP = NO; 365 | DEBUG_INFORMATION_FORMAT = dwarf; 366 | ENABLE_STRICT_OBJC_MSGSEND = YES; 367 | ENABLE_TESTABILITY = YES; 368 | GCC_C_LANGUAGE_STANDARD = gnu11; 369 | GCC_DYNAMIC_NO_PIC = NO; 370 | GCC_NO_COMMON_BLOCKS = YES; 371 | GCC_OPTIMIZATION_LEVEL = 0; 372 | GCC_PREPROCESSOR_DEFINITIONS = ( 373 | "DEBUG=1", 374 | "$(inherited)", 375 | ); 376 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 377 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 378 | GCC_WARN_UNDECLARED_SELECTOR = YES; 379 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 380 | GCC_WARN_UNUSED_FUNCTION = YES; 381 | GCC_WARN_UNUSED_VARIABLE = YES; 382 | IPHONEOS_DEPLOYMENT_TARGET = 15.4; 383 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 384 | MTL_FAST_MATH = YES; 385 | ONLY_ACTIVE_ARCH = YES; 386 | SDKROOT = iphoneos; 387 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 388 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 389 | }; 390 | name = Debug; 391 | }; 392 | E18F4222282AD0F00057864C /* Release */ = { 393 | isa = XCBuildConfiguration; 394 | buildSettings = { 395 | ALWAYS_SEARCH_USER_PATHS = NO; 396 | CLANG_ANALYZER_NONNULL = YES; 397 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 398 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; 399 | CLANG_ENABLE_MODULES = YES; 400 | CLANG_ENABLE_OBJC_ARC = YES; 401 | CLANG_ENABLE_OBJC_WEAK = YES; 402 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 403 | CLANG_WARN_BOOL_CONVERSION = YES; 404 | CLANG_WARN_COMMA = YES; 405 | CLANG_WARN_CONSTANT_CONVERSION = YES; 406 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 407 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 408 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 409 | CLANG_WARN_EMPTY_BODY = YES; 410 | CLANG_WARN_ENUM_CONVERSION = YES; 411 | CLANG_WARN_INFINITE_RECURSION = YES; 412 | CLANG_WARN_INT_CONVERSION = YES; 413 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 414 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 415 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 416 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 417 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 418 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 419 | CLANG_WARN_STRICT_PROTOTYPES = YES; 420 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 421 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 422 | CLANG_WARN_UNREACHABLE_CODE = YES; 423 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 424 | COPY_PHASE_STRIP = NO; 425 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 426 | ENABLE_NS_ASSERTIONS = NO; 427 | ENABLE_STRICT_OBJC_MSGSEND = YES; 428 | GCC_C_LANGUAGE_STANDARD = gnu11; 429 | GCC_NO_COMMON_BLOCKS = YES; 430 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 431 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 432 | GCC_WARN_UNDECLARED_SELECTOR = YES; 433 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 434 | GCC_WARN_UNUSED_FUNCTION = YES; 435 | GCC_WARN_UNUSED_VARIABLE = YES; 436 | IPHONEOS_DEPLOYMENT_TARGET = 15.4; 437 | MTL_ENABLE_DEBUG_INFO = NO; 438 | MTL_FAST_MATH = YES; 439 | SDKROOT = iphoneos; 440 | SWIFT_COMPILATION_MODE = wholemodule; 441 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 442 | VALIDATE_PRODUCT = YES; 443 | }; 444 | name = Release; 445 | }; 446 | E18F4224282AD0F00057864C /* Debug */ = { 447 | isa = XCBuildConfiguration; 448 | buildSettings = { 449 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 450 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 451 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 452 | CODE_SIGN_STYLE = Automatic; 453 | CURRENT_PROJECT_VERSION = 1; 454 | DEVELOPMENT_ASSET_PATHS = "\"Demo/Preview Content\""; 455 | DEVELOPMENT_TEAM = R38K25C8UB; 456 | ENABLE_PREVIEWS = YES; 457 | GENERATE_INFOPLIST_FILE = YES; 458 | INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; 459 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; 460 | INFOPLIST_KEY_UILaunchScreen_Generation = YES; 461 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 462 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 463 | LD_RUNPATH_SEARCH_PATHS = ( 464 | "$(inherited)", 465 | "@executable_path/Frameworks", 466 | ); 467 | MARKETING_VERSION = 1.0; 468 | PRODUCT_BUNDLE_IDENTIFIER = com.ozhayta.HidableTabView.demo; 469 | PRODUCT_NAME = "$(TARGET_NAME)"; 470 | SWIFT_EMIT_LOC_STRINGS = YES; 471 | SWIFT_VERSION = 5.0; 472 | TARGETED_DEVICE_FAMILY = "1,2"; 473 | }; 474 | name = Debug; 475 | }; 476 | E18F4225282AD0F00057864C /* Release */ = { 477 | isa = XCBuildConfiguration; 478 | buildSettings = { 479 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 480 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 481 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 482 | CODE_SIGN_STYLE = Automatic; 483 | CURRENT_PROJECT_VERSION = 1; 484 | DEVELOPMENT_ASSET_PATHS = "\"Demo/Preview Content\""; 485 | DEVELOPMENT_TEAM = R38K25C8UB; 486 | ENABLE_PREVIEWS = YES; 487 | GENERATE_INFOPLIST_FILE = YES; 488 | INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; 489 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; 490 | INFOPLIST_KEY_UILaunchScreen_Generation = YES; 491 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 492 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 493 | LD_RUNPATH_SEARCH_PATHS = ( 494 | "$(inherited)", 495 | "@executable_path/Frameworks", 496 | ); 497 | MARKETING_VERSION = 1.0; 498 | PRODUCT_BUNDLE_IDENTIFIER = com.ozhayta.HidableTabView.demo; 499 | PRODUCT_NAME = "$(TARGET_NAME)"; 500 | SWIFT_EMIT_LOC_STRINGS = YES; 501 | SWIFT_VERSION = 5.0; 502 | TARGETED_DEVICE_FAMILY = "1,2"; 503 | }; 504 | name = Release; 505 | }; 506 | E1D53AD0283175E30089FD3C /* Debug */ = { 507 | isa = XCBuildConfiguration; 508 | buildSettings = { 509 | CODE_SIGN_STYLE = Automatic; 510 | CURRENT_PROJECT_VERSION = 1; 511 | DEFINES_MODULE = YES; 512 | DEVELOPMENT_TEAM = R38K25C8UB; 513 | DYLIB_COMPATIBILITY_VERSION = 1; 514 | DYLIB_CURRENT_VERSION = 1; 515 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 516 | GENERATE_INFOPLIST_FILE = YES; 517 | INFOPLIST_KEY_NSHumanReadableCopyright = ""; 518 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 519 | LD_RUNPATH_SEARCH_PATHS = ( 520 | "$(inherited)", 521 | "@executable_path/Frameworks", 522 | "@loader_path/Frameworks", 523 | ); 524 | MARKETING_VERSION = 1.0; 525 | PRODUCT_BUNDLE_IDENTIFIER = com.ozhayta.HidableTabView; 526 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 527 | SKIP_INSTALL = YES; 528 | SWIFT_EMIT_LOC_STRINGS = YES; 529 | SWIFT_VERSION = 5.0; 530 | TARGETED_DEVICE_FAMILY = "1,2"; 531 | VERSIONING_SYSTEM = "apple-generic"; 532 | VERSION_INFO_PREFIX = ""; 533 | }; 534 | name = Debug; 535 | }; 536 | E1D53AD1283175E30089FD3C /* Release */ = { 537 | isa = XCBuildConfiguration; 538 | buildSettings = { 539 | CODE_SIGN_STYLE = Automatic; 540 | CURRENT_PROJECT_VERSION = 1; 541 | DEFINES_MODULE = YES; 542 | DEVELOPMENT_TEAM = R38K25C8UB; 543 | DYLIB_COMPATIBILITY_VERSION = 1; 544 | DYLIB_CURRENT_VERSION = 1; 545 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 546 | GENERATE_INFOPLIST_FILE = YES; 547 | INFOPLIST_KEY_NSHumanReadableCopyright = ""; 548 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 549 | LD_RUNPATH_SEARCH_PATHS = ( 550 | "$(inherited)", 551 | "@executable_path/Frameworks", 552 | "@loader_path/Frameworks", 553 | ); 554 | MARKETING_VERSION = 1.0; 555 | PRODUCT_BUNDLE_IDENTIFIER = com.ozhayta.HidableTabView; 556 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 557 | SKIP_INSTALL = YES; 558 | SWIFT_EMIT_LOC_STRINGS = YES; 559 | SWIFT_VERSION = 5.0; 560 | TARGETED_DEVICE_FAMILY = "1,2"; 561 | VERSIONING_SYSTEM = "apple-generic"; 562 | VERSION_INFO_PREFIX = ""; 563 | }; 564 | name = Release; 565 | }; 566 | /* End XCBuildConfiguration section */ 567 | 568 | /* Begin XCConfigurationList section */ 569 | E18F4210282AD0EE0057864C /* Build configuration list for PBXProject "HidableTabView" */ = { 570 | isa = XCConfigurationList; 571 | buildConfigurations = ( 572 | E18F4221282AD0F00057864C /* Debug */, 573 | E18F4222282AD0F00057864C /* Release */, 574 | ); 575 | defaultConfigurationIsVisible = 0; 576 | defaultConfigurationName = Release; 577 | }; 578 | E18F4223282AD0F00057864C /* Build configuration list for PBXNativeTarget "Demo" */ = { 579 | isa = XCConfigurationList; 580 | buildConfigurations = ( 581 | E18F4224282AD0F00057864C /* Debug */, 582 | E18F4225282AD0F00057864C /* Release */, 583 | ); 584 | defaultConfigurationIsVisible = 0; 585 | defaultConfigurationName = Release; 586 | }; 587 | E1D53ACF283175E30089FD3C /* Build configuration list for PBXNativeTarget "HidableTabView" */ = { 588 | isa = XCConfigurationList; 589 | buildConfigurations = ( 590 | E1D53AD0283175E30089FD3C /* Debug */, 591 | E1D53AD1283175E30089FD3C /* Release */, 592 | ); 593 | defaultConfigurationIsVisible = 0; 594 | defaultConfigurationName = Release; 595 | }; 596 | /* End XCConfigurationList section */ 597 | }; 598 | rootObject = E18F420D282AD0EE0057864C /* Project object */; 599 | } 600 | --------------------------------------------------------------------------------