iOS
UITabBarController
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.
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".
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".
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
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
Seleziona un'altra scheda
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
}