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 ().
Câu trả lời:
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
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.
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:
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.
Trước khi push set controller.hidesBottomBarWhenPushing = true
let objCreateEventVC = CreateEventVC()
objCreateEventVC.hidesBottomBarWhenPushed = true
self.navigationController?.pushViewController(objCreateEventVC, animated: false)
setViewControllers
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.
Hide Bottom Bar on Push
có một hình ảnh động khó chịu, imo.
Swift 3.
self.tabBarController?.tabBar.isHidden = true
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
}
}
Đâ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
Để ẩ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.
vc.hidesBottomBarWhenPushed = true
nên thực hiện công việc. KHÔNG hiển thị và ẩn thanh tab theo cách thủ công.