2017-12-13 8 views
-2

資産カタログで設定された画像に「テンプレート画像」が設定されていても、タブバーのアイコンの背景に白い背景が表示されます。ここではいくつかの例は以下のとおりです。iOSシミュレータでは、テンプレートレンダリングモードの透過画像に白い背景が表示されます

上ですべての設定はありません背景UITabBar

With no background setting

同じ画像暗く、コントラストが

With no background setting, image enhanced

同じアイコンの背景を引き出すように変更赤い背景を使用していますが、UITabBar.appearance().barTintColor = red

enter image description here

ここでiOSの設定で、すべての3つのサイズでエクスポートされたスケッチのiOSのUIライブラリーから、新たにエクスポートされた形状は、です:

With a green background

私は

The final png

を使用して、最終的なPNG

Pixelmatorから見た透明度を示すPNG

A screenshot of the icon in Pixelmator

イメージは、アセットカタログ内およびプログラムによってテンプレートモードに設定されています。それぞれの背景には、UITabBarappearance()で設定し、私はUITabBarControllerをサブクラスではないよ、と私はストーリーボードを使用していないよ、とここで私は単純化するvar名前で、この問題を再現する必要があるすべてのコードです:

// AppDelegate 
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    window = UIWindow(frame: UIScreen.main.bounds) 
    let tabBarController = UITabBarController() 
    // let controllers = [...] 
    tabBarController.setViewControllers(controllers, animated: false) 
    UITabBar.appearance().tintColor = UIColor.brown 
    UITabBar.appearance().barTintColor = // red, green, etc 
    window!.rootViewController = tabBarController 
    window!.makeKeyAndVisible() 
    return true 
} 

そしてここにはあります私はそのコントローラにUITabBarItemを設定する場所:

// The controller with the tab icon 
override init(style: UITableViewStyle) { 
    super.init(style: style)   
    let booImage = UIImage(named: "boo")?.withRenderingMode(.alwaysTemplate) 
    self.tabBarItem = UITabBarItem(title: "Controller", image: booImage, tag: 1) 
} 

を除けば、コードのこれらの数行から、これは他の変化と新鮮なプロジェクトです。私が望むどんな色にも色を付けることができるので、イメージがテンプレートであることがわかりますが、白い背景が常に残っています。

ドキュメントに基づいて、テンプレート画像をUITabBarItemアイコンとして使用するために必要な他の手順はありません。誰でも、UITabBarItemsに白い背景が表示される理由を知っていますか?それはシミュレータで実行されているという事実と関係がありますか?

+0

は、(以下私の答えを参照)を再現することはできません。シンプルなデモンストレーションプロジェクトをどこかに投稿したいのであれば、私はそれをダウンロードして見てうれしいです。 – matt

+0

さて、それを得ました、ごめんなさい!もうやりません。編集:私は前にそれをやって覚えていないが、教訓を学んだ – bpercevic

+0

それは大丈夫です。私たちはフォーラムではないことを覚えておいてください。 「バンプ」や「解決済み」などを追加しないでください。ありがとう。 ;) – Moritz

答えて

1

再現することはできません。ここで私のアプリは5sのシミュレータで実行されている(風景で);何の "白い背景は" ありません:

enter image description here

は、ここでは、コードの全体です:

// AppDelegate.swift 

import UIKit 
@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 
    var window: UIWindow? 
    func application(_ application: UIApplication, didFinishLaunchingWithOptions 
     launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
      self.window = self.window ?? UIWindow() 
      let tabBarController = UITabBarController() 
      let controllers = [ViewController()] 
      tabBarController.setViewControllers(controllers, animated: false) 
      UITabBar.appearance().tintColor = .yellow 
      UITabBar.appearance().barTintColor = .red 
      self.window!.rootViewController = tabBarController 
      self.window!.makeKeyAndVisible() 
      return true 
    } 
} 

// ViewController.swift 

import UIKit 
class ViewController: UIViewController { 
    init() { 
     super.init(nibName: nil, bundle: nil) 
     let booImage = UIImage(named: "ghost")?.withRenderingMode(.alwaysTemplate) 
     self.tabBarItem = UITabBarItem(title: "Controller", image: booImage, tag: 1) 
     self.view.backgroundColor = .white 
    } 
    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 
} 
+0

ありがとうございました。私は新しいプロジェクトで同じことを試みましたが、イメージは期待どおりの背景なしに現れます。だから私は本当に何が起こっているのか理解していないが、私はこのプロジェクトを放棄して新鮮なものから始めなければならないかもしれないと思う。それをチェックしてくれてありがとう – bpercevic

+0

私の理論は、あなたが使用していると思っているイメージ、またはあなたが実行していると思っているコードは、実際に使用/実行されているものではないということです。私が言ったように、無関係なものを取り除くことができれば、プロジェクトを見てうれしいです。 – matt

+0

私はそれを理解しました。私はGitHub上のいくつかのボタンコレクションレポからカスタムUIButtonを使って素早くファイルを持っています。それを取り除いた後、物事は期待通りに機能します。 UIButtonの動作を変更していないため、このファイルは疑わしくない.UIButtonをサブクラス化するだけだった。私にとってこれを見る時間をとってくれてありがとう – bpercevic

0

UITabBarはおそらくbackground = whiteです。タブバーの背景をクリアするようにしてください。あなたはストーリーボードでこれを行うことができます。また、デフォルトのUITabBarを拡張し、これをコードで更新したいという理由がいくつかあります。

Storyboard Color

+0

実際には、私は質問をreworded。私の問題は、完全に透明なPNGであっても、UITabBarItemの画像は透明ではないということです。 – bpercevic

関連する問題