Ẩn thanh tab trong ứng dụng nhanh iOS


91

Tôi đang cố gắng tìm cách ẩn thanh tab trong ứng dụng nhanh trên iOS của mình. Tôi không quan tâm đến bất kỳ hình ảnh động lạ mắt hay bất cứ thứ gì. Chỉ cần một cái gì đó tôi có thể đặt trong hàm ViewDidLoad ().


Đặt điều này trước khi đẩy VC. vc.hidesBottomBarWhenPushed = truenên thực hiện công việc. KHÔNG hiển thị và ẩn thanh tab theo cách thủ công.
abhimuralidharan

Câu trả lời:


213

Bạn chỉ có thể sử dụng điều này trong ViewDidLoad()phương pháp của mình .

self.tabBarController?.tabBar.hidden = true

Đối với Swift 3.0, 4.0, 5.0 :

self.tabBarController?.tabBar.isHidden = true

Hoặc bạn có thể thay đổi vị trí z của thanh tab theo cách này:

self.tabBarController?.tabBar.layer.zPosition = -1

và nếu bạn muốn hiển thị lại thì:

self.tabBarController?.tabBar.layer.zPosition = 0

14
Dharmesh, cảm ơn vì đã trả lời. Thao tác này ẩn thanh tab thành công, nhưng khi đó chế độ xem bảng không lấp đầy màn hình. Nó chỉ có màu đen ở vị trí của thanh tab. Tôi đoán có một bước nữa để làm cho nó vừa với màn hình?
Robert

3
Thêm các ràng buộc cho điều đó.
Dharmesh Kheni

2
Những "ràng buộc" để thêm vào là gì?
db0

Nếu bạn đã sử dụng các ràng buộc thì bạn có thể thay đổi ràng buộc chiều cao cho điều đó hoặc bạn có thể thay đổi khung của tableView. @ db0
Dharmesh Kheni

5
Nhưng thanh tab vẫn có thể chạm vào, hãy thử chạm vào gần bất kỳ tab nào của thanh tab ẩn. @DharmeshKheni
Shobhit C

140

Câu trả lời được chấp nhận hoạt động, nhưng quá trình chuyển đổi sang chế độ xem khác có hoạt ảnh bị giật (Hoạt ảnh trên thanh tab)

Cũng muốn nói thêm rằng mặc dù giải pháp của Kalpesh hoạt động hoàn hảo đối với tôi, nhưng tôi phát hiện ra rằng mọi bộ điều khiển chế độ xem đều có một thuộc tính cho hidesBottomBarWhenPushing (kiểm tra bảng phân cảnh.) Nếu bạn muốn ẩn thanh tab, bạn nên đánh dấu vào đó. Và nó sẽ hoạt động tuyệt vời.

nhập mô tả hình ảnh ở đây

Cập nhật: Tôi không chắc đây có phải là điều đã biết hay không, nhưng đây là những gì trang tài liệu của apple cho biết:

Bộ điều khiển chế độ xem được thêm vào dưới dạng con của bộ điều khiển điều hướng có thể hiển thị thanh công cụ tùy chọn ở cuối màn hình. Giá trị của thuộc tính này trên bộ điều khiển chế độ xem trên cùng xác định xem thanh công cụ có hiển thị hay không. Nếu giá trị của thuộc tính này là true, thanh công cụ sẽ bị ẩn. Nếu giá trị của thuộc tính này là false, thanh này sẽ hiển thị.

Tôi nghĩ điều này có nghĩa là bạn phải đặt giá trị cơ bản của hidesBottomBarWhenPushing ở bộ điều khiển chế độ xem trên cùng (giá trị đầu tiên trên ngăn xếp điều hướng.) Khi bạn đã đặt giá trị đó thành true, bạn có thể thay đổi thành false hoặc true cho các bộ điều khiển chế độ xem khác trên cây rơm. Tuy nhiên, nếu giá trị hidesBottomBarWhenPushing của bộ điều khiển chế độ xem trên cùng của bạn là sai, nó sẽ không hiển thị thanh tab cho các bộ điều khiển khác trên ngăn xếp điều hướng.


2
đó là những gì chúng ta nên làm. Rất nhiều hơn câu trả lời khác nếu bạn chỉ muốn giấu nó trong khi bạn trình bày các ViewController
Gabriel Goncalves

tại sao điều này không hoạt động trong Swift 4 ?? Tôi đã đánh dấu vào tùy chọn, nhưng nó vẫn xuất hiện khi tôi đi đến bộ điều khiển chế độ xem cụ thể đó
ken

Điều này cũng ẩn thanh tab cho bất kỳ bộ điều khiển chế độ xem nào được thêm vào ngăn xếp sau đó. Có cách nào để đưa nó trở lại cho những bộ điều khiển chế độ xem tiếp theo không?
Justin Vallely

@JustinVallely Xin vui lòng cho tôi biết nếu cập nhật hoạt động trong câu trả lời
Akshansh Thakur

1
Cảm ơn, câu trả lời được chấp nhận có một vấn đề đối với tôi, khi tôi quay lại chế độ xem mà tôi đang xem, Thanh Tab cho điều đó cũng bị hủy bỏ!
Abed Naseri

79

Trước khi push set controller.hidesBottomBarWhenPushing = true

let objCreateEventVC = CreateEventVC()
objCreateEventVC.hidesBottomBarWhenPushed = true
self.navigationController?.pushViewController(objCreateEventVC, animated: false)

Không hoạt động khi thêm nhiều bộ điều khiển vớisetViewControllers
KR

27

Không cần đặt thuộc tính isHidden của tabBar.

Đơn giản, vào ViewController (trong StoryBoard) -> Trình kiểm tra thuộc tính -> Trong phần 'View Controller', chọn hộp kiểm 'Hide Bottom Bar on Push'. Công việc này như một cái duyên vậy.

Nếu bạn đi theo cách 'isHidden', bạn cần phải xử lý rất nhiều, tức là để làm cho nó xuất hiện trở lại khi bạn quay lại và cũng để xóa không gian trống dưới cùng sau khi ẩn tabBar.


3
Đây phải là câu trả lời thực tế. Điều này cho phép tôi thiết lập các ràng buộc cho các phần tử giao diện người dùng của mình mà không gặp bất kỳ rắc rối nào.
Karthik Kannan

2
Hide Bottom Bar on Pushcó một hình ảnh động khó chịu, imo.
Teodor Ciuraru

Khi bạn quay lại từ trang này, Tabbar sẽ đóng băng một chút và quay trở lại. Bạn nghĩ lý do là gì?
Yunus T.


3

Bạn cũng có thể đặt nó trong phần mở rộng (sử dụng câu trả lời của Dharmesh Kheni)

extension UITabBar {
func tabsVisiblty(_ isVisiblty: Bool = true){
    if isVisiblty {
        self.isHidden = false
        self.layer.zPosition = 0
    } else {
        self.isHidden = true
        self.layer.zPosition = -1
    }
}

2

Đây là cách được lập trình cho Swift 4.0, 4.1, 4.2, 5.0 trở lên >:

tabBarController?.hidesBottomBarWhenPushed = true

hoặc là

hidesBottomBarWhenPushed = true

@NicoS. Thật. Bạn đọc được gì về thanh công cụ ở đâu trong câu hỏi / câu trả lời?
J. Doe

Từ tài liệu: Giá trị Boolean cho biết liệu thanh công cụ ở cuối màn hình có bị ẩn khi bộ điều khiển chế độ xem được đẩy sang bộ điều khiển điều hướng hay không.
Nico S.

1
Câu hỏi là về TabBar không phải ToolBar
Nico S.

@NicoS. nó cũng vậy trong tình huống này ... lol. Rõ ràng là bạn thậm chí không thèm dùng thử.
J. Doe

1
cái đầu tiên không hoạt động, cái thứ hai phải được thêm vào khi thực hiện một segue hoặc trước khi đẩy bộ điều khiển chế độ xem.
Gal Shahar

1

Để ẩn Thanh điều hướng và Thanh tab, tôi sử dụng chức năng tiếp theo:

var tabBarHeight : CGFloat!

func fullScreenAction(){
    if navigationController?.isNavigationBarHidden ?? false {
        //Show navigationBar
        navigationController?.setNavigationBarHidden(false, animated: false)

        //Show tabBar
        tabBarController?.tabBar.isHidden = false
        //Update the height of tabBar
        if (!(tabBarController?.tabBar.frame.size.height.isEqual(to: 0))!) {
            tabBarHeight = self.tabBarController?.tabBar.frame.size.height
        }
        tabBarController?.tabBar.frame.size.height   = tabBarHeight
    } else {
        //Hide navigationBar
        navigationController?.setNavigationBarHidden(true, animated: false)

        //Hide tabBar
        tabBarController?.tabBar.isHidden = true
        //Update the height of tabBar
        tabBarHeight = tabBarController?.tabBar.frame.size.height
        tabBarController?.tabBar.frame.size.height   = 0

    }

}

Khi hướng màn hình đã thay đổi, chiều cao của tabBar cũng thay đổi, vì vậy tôi sử dụng chức năng tiếp theo để thoát khỏi chế độ toàn màn hình để thay đổi kích thước chiều cao:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    super.viewWillTransition(to: size, with: coordinator)
    if navigationController?.isNavigationBarHidden ?? false {
        navigationController?.setNavigationBarHidden(false, animated: false)
        tabBarController?.tabBar.isHidden = false
    }
}

Tôi hy vọng nó hữu ích cho bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.