2014-10-09 17 views
7

Tôi đang cố gắng để làm cho TabBar tôi trong suốt, tôi đã tìm kiếm nhưng tất cả tôi thấy được điều dẫn đến một phần và không hoàn toàn minh bạch tabBars và một số đã cho IOS 5 vvUITabBar hoàn toàn minh bạch trong iOS 8

tôi muốn thực hiện điều này như đã thấy trong Phác thảo 3:

enter image description here

cách dễ nhất để thực hiện điều này là gì?

Tôi nghĩ để làm điều này:

// Make the tabBar transparent 
self.tabBarController.tabBar.backgroundColor = [UIColor clearColor]; 
self.tabBarController.tabBar.translucent = YES; 

nhưng kết quả đó không phải là chính xác hoàn hảo:

enter image description here

Thật trân trọng giúp :)

Trân trọng, Erik

Cập nhật

// Make the tabBar transparent 
[[UITabBar appearance] setBarTintColor:[UIColor clearColor]]; 
self.tabBarController.tabBar.translucent = YES; 

Trả lời

22

Bạn đã thử barTintColor chưa?

[[UITabBar appearance] setBarTintColor:[UIColor clearColor]]; 
[[UITabBar appearance] setBackgroundImage:[UIImage new]]; 

Điều đó cần thực hiện thủ thuật.

+0

Cùng một kết quả với mã tôi đặt trong câu hỏi được cập nhật của tôi:/- Tôi đặt mã này trong phương pháp viewWillAppear, là đúng? – Erik

+0

@Erik 'viewWillAppear:' đã quá muộn. Hãy thử đặt nó vào ứng dụng 'AppDelegate của bạn: didFinishLaunchingWithOptions:' và xem nó có giúp ích gì không. –

+0

@JohannesFagrenkrug không may kết quả tương tự với mã trong bản cập nhật của tôi được viết bằng didFinishLaunchingWithOptions: – Erik

6

Bạn cần phải phân lớp các UITabBarController và trong viewdidload: bạn nên đặt mã này:

CGRect rect = CGRectMake(0, 0, 1, 1); 
UIGraphicsBeginImageContextWithOptions(rect.size, NO, 1.0); 
CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor); 
CGContextFillRect(context, rect); 
UIImage *transparentImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
[self.tabBar setBackgroundImage:transparentImage]; 
[self.tabBar setShadowImage:transparentImage];  
// self.tabBar.alpha = 0.0; 
+1

Tôi không sử dụng phân lớp, nhưng 'setShadowImage' là bí quyết cho vấn đề của tôi, +1 :) – Olie

19

Swift 3,0

... gọi mã này trong didFinishLaunchingWithOptions của appdelegate

let tabBar = UITabBar.appearance() 
tabBar.barTintColor = UIColor.clear 
tabBar.backgroundImage = UIImage() 
tabBar.shadowImage = UIImage() 

Kết quả sẽ là nền trong suốt cho mọi UITabBar.

+0

Sau rất nhiều lần thử nghiệm và các giải pháp khác nhau trên internet, điều này khiến tabbar 'mờ' nhưng bây giờ nó cảm thấy nó quá mờ và không mờ chút nào. Tôi tin rằng tabBar của nó.backgroundImage = UIImage() gây ra điều này. Bất kỳ trợ giúp bổ sung nào có thể tạo hiệu ứng mờ đẹp thay vì hoàn toàn trong suốt? – c0d3Junk13

0

giải pháp dễ dàng này cố định vấn đề của tôi:

let size = CGSize(width: tabBar.bounds.size.width, 
         height: tabBar.bounds.size.height) 
tabBar.backgroundImage = UIImage.jotImage(with: UIColor.clear, size: size) 
Các vấn đề liên quan