├── 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 |
23 | - https://github.com/AliMert/HidableTabView-SwiftUI.git
24 |
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 |
--------------------------------------------------------------------------------