Ricerca…


Crea un'istanza

Una "barra delle schede" si trova comunemente nella maggior parte delle app iOS e viene utilizzata per presentare viste distinte in ciascuna scheda.

Per creare un controller della barra delle schede utilizzando il generatore di interfacce, trascinare una barra della scheda Controller dalla libreria degli oggetti nell'area di disegno.

controller della barra delle linguette

Per impostazione predefinita, un controller barra delle linguette viene fornito con due viste. Per aggiungere altre viste, controlla il trascinamento dal controller della barra delle schede alla nuova vista e seleziona "Visualizza controller" nel menu a discesa "segue".

barra delle schede con visualizzazioni

Modifica del titolo e dell'icona della barra delle schede

Usando la Story Board:

Seleziona la voce della barra delle schede dal controller della vista corrispondente e vai all'ispettore degli attributi

Se si desidera un'icona e un titolo incorporati, impostare "Voce sistema" sul valore corrispondente.

Per un'icona personalizzata, aggiungi le immagini necessarie alla cartella delle risorse e imposta l''elemento del sistema' da precedente a 'personalizzato'.

Ora imposta l'icona da mostrare quando la scheda è selezionata dall'elenco a discesa "immagine selezionata" e l'icona della scheda predefinita dal menu a discesa "immagine". Aggiungi il titolo corrispondente nel campo "titolo".

Controllo degli attributi degli elementi della barra delle schede

livello di programmazione:

Nel metodo viewDidLoad() del controller di visualizzazione, aggiungere il seguente codice:

Objective-C:

self.title = @"item";

self.tabBarItem.image = [UIImage imageNamed:@"item"];
self.tabBarItem.selectedImage = [UIImage imageNamed:@"item_selected"];

Swift:

self.title = "item"
self.tabBarItem.image = UIImage(named: "item")
self.tabBarItem.selectedImage = UIImage(named: "item_selected")

Controller di navigazione con TabBar

Il controller di navigazione può essere incorporato in ogni scheda usando lo storyboard stesso. Può essere come nello screenshot aggiunto.

Per aggiungere un controller di navigazione a un controller di visualizzazione che si collega dal controller della barra delle linguette, ecco il flusso

  • Seleziona il controller di visualizzazione per il quale dobbiamo aggiungere il controller di navigazione. Qui lascia che sia Search View Controller come display di selezione.
  • Dal menu Editor di Xcode, selezionare Incorpora in -> Opzione Controller di navigazione

inserisci la descrizione dell'immagine qui

Personalizzazione del colore della barra delle tabulazioni

[[UITabBar appearance] setTintColor:[UIColor whiteColor]];
[[UITabBar appearance] setBarTintColor:[UIColor tabBarBackgroundColor]];
[[UITabBar appearance] setBackgroundColor:[UIColor tabBarInactiveColor]];
[[UINavigationBar appearance] setBarTintColor:[UIColor appBlueColor]];
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];

UITabBarController con selezione dei colori personalizzata

UITabBarController building in Swift 3 Cambia il colore dell'immagine e il titolo in base alla selezione con la modifica del colore della scheda selezionata.

import UIKit

class TabbarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        self.navigationController?.isNavigationBarHidden = true
        
        UITabBar.appearance().tintColor = UIColor.purple
        
        // set red as selected background color
        let numberOfItems = CGFloat(tabBar.items!.count)
        let tabBarItemSize = CGSize(width: tabBar.frame.width / numberOfItems, height: tabBar.frame.height)
        tabBar.selectionIndicatorImage = UIImage.imageWithColor(UIColor.lightText.withAlphaComponent(0.5), size: tabBarItemSize).resizableImage(withCapInsets: UIEdgeInsets.zero)
        
        // remove default border
        tabBar.frame.size.width = self.view.frame.width + 4
        tabBar.frame.origin.x = -2
        
    }
    
    override func viewWillAppear(_ animated: Bool) {
        // For Images
        let firstViewController:UIViewController = NotificationVC()
        // The following statement is what you need
        let customTabBarItem:UITabBarItem = UITabBarItem(title: nil, image: UIImage(named: "notification@2x")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal), selectedImage: UIImage(named: "notification_sel@2x"))
        firstViewController.tabBarItem = customTabBarItem
        
        for item in self.tabBar.items! {
            let unselectedItem = [NSForegroundColorAttributeName: UIColor.white]
            let selectedItem = [NSForegroundColorAttributeName: UIColor.purple]
            
            item.setTitleTextAttributes(unselectedItem, for: .normal)
            item.setTitleTextAttributes(selectedItem, for: .selected)
        }
    }

}


extension UIImage {
    class func imageWithColor(_ color: UIColor, size: CGSize) -> UIImage {
        let rect: CGRect = CGRect(origin: CGPoint(x: 0,y :0), size: CGSize(width: size.width, height: size.height))
        UIGraphicsBeginImageContextWithOptions(size, false, 0)
        color.setFill()
        UIRectFill(rect)
        let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext()
        return image
    }
    
}

Scegliere l'immagine per la barra delle schede e impostare qui il titolo della scheda

crea una scheda personalizzata

Selezione della scheda

Seleziona un'altra scheda

inserisci la descrizione dell'immagine qui

Crea un controller Barra di Tab in modo programmatico senza Storyboard

class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    
    var firstTabNavigationController : UINavigationController!
    var secondTabNavigationControoller : UINavigationController!
    var thirdTabNavigationController : UINavigationController!
    var fourthTabNavigationControoller : UINavigationController!
    var fifthTabNavigationController : UINavigationController!
    


    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        Fabric.with([Crashlytics.self])
        
       window = UIWindow(frame: UIScreen.main.bounds)
        
        
        window?.backgroundColor = UIColor.black
            
        
        let tabBarController = UITabBarController()
        
        firstTabNavigationController = UINavigationController.init(rootViewController: FirstViewController())
        secondTabNavigationControoller = UINavigationController.init(rootViewController: SecondViewController())
        thirdTabNavigationController = UINavigationController.init(rootViewController: ThirdViewController())
        fourthTabNavigationControoller = UINavigationController.init(rootViewController: FourthViewController())
        fifthTabNavigationController = UINavigationController.init(rootViewController: FifthViewController())
        
        tabBarController.viewControllers = [firstTabNavigationController, secondTabNavigationControoller, thirdTabNavigationController, fourthTabNavigationControoller, fifthTabNavigationController]
        
        
        let item1 = UITabBarItem(title: "Home", image: UIImage(named: "ico-home"), tag: 0)
        let item2 = UITabBarItem(title: "Contest", image:  UIImage(named: "ico-contest"), tag: 1)
        let item3 = UITabBarItem(title: "Post a Picture", image:  UIImage(named: "ico-photo"), tag: 2)
        let item4 = UITabBarItem(title: "Prizes", image:  UIImage(named: "ico-prizes"), tag: 3)
        let item5 = UITabBarItem(title: "Profile", image:  UIImage(named: "ico-profile"), tag: 4)

        firstTabNavigationController.tabBarItem = item1
        secondTabNavigationControoller.tabBarItem = item2
        thirdTabNavigationController.tabBarItem = item3
        fourthTabNavigationControoller.tabBarItem = item4
        fifthTabNavigationController.tabBarItem = item5
                
        UITabBar.appearance().tintColor = UIColor(red: 0/255.0, green: 146/255.0, blue: 248/255.0, alpha: 1.0)
        
        self.window?.rootViewController = tabBarController
        
        window?.makeKeyAndVisible()

        return true
    }


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow