it-swarm.com.de

Swift und Xcode - Gewusst wie: Erstellen von benutzerdefinierten Registerkartensymbolen

Ich habe ein Anwendungsprojekt mit Registerkarten, an dem ich arbeite, in Xcode, das in Swift (Xcode 6.3 and Swift 1.2) geschrieben ist. Ich habe Probleme mit benutzerdefinierten Symbolen für die Tab-Leiste. Ich habe ein Bild in Photoshop (CS6) entworfen, als PNG-Datei gespeichert, in Prepo in 30x30 geändert und in Xcode in der Objektbibliothek importiert. Dann setze ich das tab view controllers-Symbol auf dieses Bild. Es zeigt sich jedoch nicht.

Ich habe mir diese Seiten angesehen, aber keine Hilfe gefunden:
https://www.youtube.com/watch?v=4qqqoAWNfZABenutzerdefinierte Registerkartensymbolfarbenhttp://www.raywenderlich.com/forums /viewtopic.php?f=2&t=19333
http://www.appcoda.com/ios-programming-how-to-customize-tab-bar-background-appearance/https://www.youtube.com/ watch? v = 4Tj_SeApUrs

Was ist der richtige Vorgang zum Erstellen von benutzerdefinierten Registerkartensymbolen?

28
Matt Kelly

Nach ein wenig Recherche habe ich das Problem gelöst. Ich dachte, ich würde hier posten, falls jemand anderes ein ähnliches Problem hat. In Photoshop habe ich Folgendes gemacht:

  1. Importierte das Bild, das ich als Tabellensymbol verwenden wollte (es ist einfacher, wenn Sie ein Schwarzweißbild verwenden, damit Sie keine Farbe entfernen müssen).
  2. Setzen Sie den Hintergrund auf "Transparent" anstatt auf Weiß.
  3. Das gesamte Weiß wurde aus dem Bild entfernt, sodass es sich nur um ein schwarzes Bild mit transparentem Hintergrund handelt.
  4. Das Bild wurde als PNG gespeichert.
  5. Größe des Bildes in ein Quadrat mit den Abmessungen 75x75 pixels (und benannt [email protected]), 50x50 pixels (und benannt [email protected]) und 25x25 pixels (und benannt imageName.png)

In Xcode habe ich folgendes gemacht:

  1. Die Bilder in Xcode gezogen und die Bildgruppe in icoImageName umbenannt.
  2. Wählen Sie die Registerkarte aus, für die Sie das Bild im Storyboard in Xcode festlegen möchten, und legen Sie für "Bild" (unter "Barelement" im Inspektorfenster) icoImageName fest. Beachten Sie, dass ich das 'Ausgewählte Bild' nicht unter 'Tab-Leistenelement' gesetzt habe (lassen Sie dieses Feld leer).

Erledigt. 

Ich hoffe das hilft jemandem. Vielen Dank an alle für ihre Hilfe.

54
Matt Kelly

Es klingt, als hätten Sie alles in xCode richtig eingerichtet. Das Problem IS der von Ihnen verwendeten PNG-Datei. 

Laden Sie dieses Bild herunter, http://i.stack.imgur.com/zluev.png und überprüfen Sie, ob das Problem weiterhin besteht. 

Entsprechend einer Antwort auf UITabBarItem werden Bilder einfach als grauer Block angezeigt :

Die standardmäßigen Tabellensymbole in iOS werden ausschließlich aus dem Alphakanal gerendert. Farben werden vollständig ignoriert. Anstelle von Farben können Sie andere Alpha-Werte verwenden, die zu einer anderen Graustufe (oder Blau, falls ausgewählt) führen.

Machen Sie den Hintergrund Ihrer Icons transparent.

4
MacInnis

Haben Sie die Registerkartenansicht im Interface Builder erstellt? Wenn Sie die Bilder als Asset hinzugefügt haben, sollten sie in der Eigenschaft 'Image' der einzelnen Registerkarten unter der Inspektor-Seitenleiste angezeigt werden. Ich weiß auch, dass Sie bereits eine Menge Tutorials veröffentlicht haben, aber dieses ist ziemlich aktuell und erklärt es ausführlich: http://codewithchris.com/ios-tab-bar-app/

1
Luke

 enter image description here

class ViewController: UIViewController {

    @IBOutlet var btnHome : UIButton!
    @IBOutlet var btnInvoice : UIButton!
    @IBOutlet var btnSettings : UIButton!
    @IBOutlet var btnMyOrder : UIButton!
    @IBOutlet var btnLogout : UIButton!

    @IBOutlet weak var viewContainer: UIView!

    var navController : UINavigationController!

    var selectedIndex : Int! = 0

    var arrTabColor  = [UIColor(red: 35.0/255.0, green: 93.0/255.0, blue: 175.0/255.0, alpha: 1.0),
                        UIColor(red: 29.0/255.0, green: 86.0/255.0, blue: 167.0/255.0, alpha: 1.0),
                        UIColor(red: 35.0/255.0, green: 93.0/255.0, blue: 175.0/255.0, alpha: 1.0),
                        UIColor(red: 29.0/255.0, green: 86.0/255.0, blue: 167.0/255.0, alpha: 1.0),
                        UIColor(red: 35.0/255.0, green: 93.0/255.0, blue: 175.0/255.0, alpha: 1.0)]

    var arrTabIdentiFierVC       = ["FirstVC","SecondVC","FirstVC","FirstVC","SecondVC"]


    // MARK: - Life Cycle

    override func viewDidLoad()
    {
        super.viewDidLoad()
        setTabbarImage(0)

        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func setTabBarClicked(_ storyIdentifier : String,identifier : String)
    {
        let aStoryboard  = UIStoryboard.init(name: storyIdentifier, bundle: nil)
        let newViewController = aStoryboard.instantiateViewController(withIdentifier: identifier)

        navController = UINavigationController(rootViewController: newViewController)
        self.addChildViewController(navController)

        navController.view.frame = viewContainer.frame
        newViewController.view.frame = viewContainer.frame

        self.viewContainer.addSubview(navController.view)
        newViewController.didMove(toParentViewController: self)


    }

    func setTabbarImage(_ selectedIndex : Int!)
    {
        btnHome.backgroundColor = arrTabColor[0]
        btnInvoice.backgroundColor = arrTabColor[1]
        btnSettings.backgroundColor = arrTabColor[2]
        btnMyOrder.backgroundColor = arrTabColor[3]
        btnLogout.backgroundColor = arrTabColor[4]

        let selectedColor = UIColor(red: 40/255, green: 142/255, blue: 206.0/255, alpha: 1.0)

        if selectedIndex == 0
        {
            btnHome.backgroundColor = selectedColor

        }
        else if selectedIndex == 1
        {
            btnInvoice.backgroundColor = selectedColor

        }
        else if selectedIndex == 2
        {
            btnSettings.backgroundColor = selectedColor

        }
        else if selectedIndex == 3
        {
            btnMyOrder.backgroundColor = selectedColor
        }
        else if selectedIndex == 4
        {
            btnLogout.backgroundColor = selectedColor

        }
    }

    // MARK: - Action Method
    @IBAction func HomeClicked(_ sender : AnyObject?)
    {

        setTabbarImage(0)

        setTabBarClicked("Main",identifier: arrTabIdentiFierVC[0])

    }
    @IBAction func InvoiceClicked(_ sender : AnyObject?)
    {
        setTabbarImage(1)

        setTabBarClicked("Main",identifier: arrTabIdentiFierVC[1])

    }
    @IBAction func SettingClicked(_ sender : AnyObject?)
    {
        setTabbarImage(2)
        setTabBarClicked("Main",identifier: arrTabIdentiFierVC[2])


    }
    @IBAction func MyorderClicked(_ sender : AnyObject?)
    {
        setTabbarImage(3)
        setTabBarClicked("Main",identifier: arrTabIdentiFierVC[3])

    }
    @IBAction func logoutClicked(_ sender : AnyObject?)
    {
        setTabbarImage(4)


        let alert = UIAlertController(title: "", message: "Are you sure want to logout?", preferredStyle: UIAlertControllerStyle.alert)

        let CancelAction = UIAlertAction(title: "NO", style: .default) { (action:UIAlertAction!) in

        }
        alert.addAction(CancelAction)

        let OKAction = UIAlertAction(title: "YES", style: .default) { (action:UIAlertAction!) in

          //  var isNav : Bool! = false

            //for objChild in (self.parent?.childViewControllers)!
           // {
//                if objChild.isKind(of: LoginVC.self)
//                {
//                    self.navigationController!.popToViewController(objChild, animated: true)
//                    CommonMethods.removeCustomObject(Constants.kUserProfile)
//                    
//                    isNav = true
//                    break
//                    
//                }
           // }
           // if !isNav
           // {
//                CommonMethods.removeCustomObject(Constants.kUserProfile)
//                let aNavController = (AppDelegate.getDelegate().window!.rootViewController! as! UINavigationController)
//                let storyboard = UIStoryboard(name: "Main", bundle: nil)
//                var aVCObj = UIViewController()
//                aVCObj = storyboard.instantiateViewController(withIdentifier: "LoginVC")
//                var aMutArr = aNavController.viewControllers
//                aMutArr.insert(aVCObj, at: 0)
//                aNavController.viewControllers = aMutArr
//                aNavController.popToRootViewController(animated: true)
          //  }
        }
        alert.addAction(OKAction)
        self.present(alert, animated: true, completion: nil)
    }

    // MARK: - Action Method


}
0
Nikunj Patel