2017-08-24 10 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

[Remove UITabbar上の境界線](https://stackoverflow.com/questions/32645674/remove-uitabbar-upper-borderline) – nathan

+0

@ nathan私はすでにその投稿を見ました。それは私を助けなかった:/ – risa8

+0

どうして?行が削除されましたか? SOにこの問題の解決策がたくさんあります:https://google.com/search?hl=en&q=UITabBar%20remove%20hairline+site%3Astackoverflow.com – nathan

答えて

2

これは確かにバグのようです。 iOS 10以前は正常に動作しました。.backgroundImageを設定し、UITabBar.appearance().shadowImage = nil(または空の画像または透過画像)を設定します。あなたの背景画像はタブバーよりも背が高い場合は...

iOSの10、で

は、「影の画像は、」背景画像の上に置かれます。 0.5ポンドの高さであり、になります。

あなたの背景画像はタブバーよりませ背が高い場合には、「影の画像は、」表示されなくなり。

...デバッグ階層を介してiOS 9と10の間の構造を比較すると、「シャドウイメージ」が別のビューのサブビューであることがわかります。

そう...あなたはそれを取り除くことができますが、注意点と...

A.タブバーより短い背景画像を使用しています。

B. clip to bounds(ただし、背景画像の上部が消えます)。

C.完全に透明な背景を使用してください... .backgroundImage.shadowImageの両方をnilに設定するか、またはUIImage()に設定します。もちろん、タブバーの背景として必要な画像を表示するには、別の方法を見つける必要があります。

または...推奨されていません...

D. viewDidAppearで、tabBarサブビューを実行し、「シャドウイメージ」を見つけて非表示にします。これは機能しますが、Appleがタブバーの構造を変更すると失敗する可能性があります(そして、技術的には "文書化されていない"ので...)。

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

タブバーの高さを変更して行を削除することで解決しました。ご協力いただきありがとうございます! – 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? 

デフォルトはnilです。 non-nilの場合は、デフォルトシャドウイメージの代わりに の代わりに表示するカスタムシャドウイメージ。カスタムシャドウを表示するには、カスタムの 背景画像も-setBackgroundImage:で設定する必要があります( のデフォルト背景画像が使用されている場合、デフォルトシャドウ画像は になります)。

関連する問題