2017-01-07 4 views
3

hinzufügen Ich habe eine UITabBarController Unterklasse und ich möchte ein kleines weißes rechteckiges Symbol unter dem ausgewählten Symbol UITabBarItem hinzufügen. Ich benutzte eine UIView und ich bekomme die TabBarItem als Unteransicht und Hinzufügen der Ansicht als Unteransicht zu. Ich mache das in viewWillAppear, es zeigt aber, wenn ich eine andere Registerkarte auswählen, erscheint es nicht unter dieser Registerkarte Leiste Element. Hier ist mein Code:Wie kleine Symbol unter ausgewählten UITabBarItem Symbol in Swift

let view = orderedTabBarItemViews()[selectedIndex] 

bottomIcon.frame = CGRect(x: 0, y: 42, width: 10, height: 3) 
bottomIcon.center = CGPoint(x: view.bounds.size.width/2, y: view.bounds.size.height/2) 
bottomIcon.backgroundColor = UIColor.white 
bottomIcon.layer.cornerRadius = 2 

view.addSubview(bottomIcon) 

Die orderedTabBarItemViews() Funktion die die TabBarItem s als ein Array von UIView s bekommt. Hier ist ein Bild von dem, was ich versuche,

Antwort

1

Ich glaube nicht zu erreichen, da eine praktische Möglichkeit ist das Hinzufügen und zeigt/Blick versteckt.

Ich empfehle Ihnen, dies zu tun mit UIImage s - also eins mit Punkt für ausgewählten Zustand und ein anderes ohne Punkt für nicht ausgewählten Zustand.

1

Es gibt mehrere Möglichkeiten:

  1. hinzufügen es als Teil des ausgewählten Bildes. Das ist die einfachste Lösung.

  2. es als Registerkarte Etikett hinzufügen (z - Charakter, oder ein besseres Unicode-Zeichen verwenden, zum Beispiel oder ) mit einer großen Schriftart.

  3. Fügen Sie es als Überlagerung zu UITabBar hinzu.

0

Dies ist eine schnelle Hack, den ich Unicode-Zeichen erstellt mit ⬬:

extension UITabBarController { 

    func addDotToTabBarItemWith(index: Int,size: CGFloat,color: UIColor, verticalOffset: CGFloat = 1.0) { 

     // set distance from tab bar icons 
     for tabItem in self.viewControllers! { 
      tabItem.tabBarItem.titlePositionAdjustment = UIOffset(horizontal: 0.0, vertical: verticalOffset) 
     } 

     // set default appearance for tabbar icon title 
     UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: color,NSFontAttributeName:UIFont(name: "American Typewriter", size: size)!], for: .normal) 
     UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: color,NSFontAttributeName:UIFont(name: "American Typewriter", size: size)!], for: .selected) 

     // place the dot 
     guard let vc = self.viewControllers?[index] else { 
      log.error("Couldn't find a TabBar Controller with index:\(index)") 
      return 
     } 

     vc.tabBarItem.title = "⬬" 
    } 
}