2017-08-24 107 views
1

我想刪除UITabBar的分隔符。我爲UITabBar設置了自定義背景圖片。使用以下代碼,分隔符位於UITabBar圖像上方。刪除UITabBar行不起作用

class myTabBarController: UITabBarController { 

    override func viewDidLoad() { 
       UITabBar.appearance().backgroundImage = UIImage(named: "secretTab.png") 

} 

enter image description here

我加入以下代碼,但它去掉不僅行,而且自定義圖像。(陰影)

class myTabBarController: UITabBarController { 

     override func viewDidLoad() { 
      self.tabBar.clipsToBounds = true 
      self.tabBarController?.tabBar.autoresizesSubviews = false 
      UITabBar.appearance().backgroundImage = UIImage(named: "secretTab.png") 
} 

enter image description here

+0

的可能重複[刪除UITabbar上邊界線](https://stackoverflow.com/questions/32645674/remove-uitabbar-upper-border-line) – nathan

+0

@ nathan我已經看過那篇文章。它沒有幫助我:/ – risa8

+0

怎麼回事?線被刪除了嗎? SO中有這個問題的答案很多:https://google.com/search?hl=zh-CN&q=UITabBar%20remove%20hairline+site%3Astackoverflow.com – nathan

回答

2

這肯定看起來像一個錯誤。在iOS 10之前,它工作正常:設置.backgroundImage,然後設置UITabBar.appearance().shadowImage = nil(或空圖像或透明圖像)。

與iOS 10,但是......

IF背景圖像比標籤欄,「影子圖像」被放置在背景圖像的頂部高;是0.5磅高,並且它可見。

,如果你的背景圖片是比標籤欄高,「影子圖像」不再可見。

而且......如果你通過調試層次的iOS 9和10之間的比較結構,你可以看到「陰影圖像」是一個不同的看法的一個子視圖。

所以...你可以擺脫它,但警告...

A.使用背景圖片比標籤欄短。

B.剪輯邊界(但你失去了你的背景圖像的頂部)。

C.使用全透明背景...將.backgroundImage.shadowImage設置爲零或UIImage()。當然,那麼你需要找到一些其他的方式來顯示你想要的圖像作爲標籤欄的背景。

或...但不建議...

D.對viewDidAppear,通過tabBar子視圖,找到「陰影圖像」,並隱藏它。這將工作 - 但是當蘋果改變了標籤欄的結構,它可能如果/失敗(和我想,在技術上是「非文件」,所以...):

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 

    var b = false 
    for v in tabBar.subviews { 
     for sv in v.subviews { 
      if sv.frame.size.height == 0.5 && sv is UIImageView { 
       // found it 
       b = true 
       sv.isHidden = true 
       break 
      } 
     } 
     if b { break } 
    } 

} 
+0

我解決了它通過更改tabbar的高度,並刪除線。謝謝你的幫助! – risa8

0

添加此

UITabBar.appearance().shadowImage = UIImage() 
0

試試這個,

//Remove shadow image by assigning nil value. 
UITabBar.appearance().shadowImage = nil 

// or 

// Assing UIImage instance without image reference 
UITabBar.appearance().shadowImage = UIImage() 


這裏是shadowImage蘋果方針。

@available(iOS 6.0, *) 
open var shadowImage: UIImage? 

默認值是零。非零時,自定義陰影圖像顯示,而不是 默認陰影圖像。對於要示出的自定義陰影,定製 背景圖像還必須與-setBackgroundImage設置:(如果使用默認 背景圖像,默認的陰影的圖像將是 使用)。