2015-09-01 7 views
9

Ich möchte die UITabBar eine obere Grenze der Breite 5.0 haben. Die Grenze sollte gelb sein. Ich möchte keine linken/unteren/rechten Grenzen.Wie kann ich den oberen Rand meiner UITabBar ändern?

Der Rand der Tableiste sollte flach sein (keine Schatten oder ähnliches).

Wie kann ich Schatten (Bild) Linie entfernen?

+0

Erstellen Sie Ihre eigene TabBar SubClass und machen Sie eine Overlay mit oberen Rand darauf. –

Antwort

24

Sie können es auf diese Weise in Ihrer FirstViewController.swift:

self.tabBarController!.tabBar.layer.borderWidth = 0.50 
self.tabBarController!.tabBar.layer.borderColor = UIColor.clearColor().CGColor 
self.tabBarController?.tabBar.clipsToBounds = true 

Und Ergebnis wird sein:

Vorher:

enter image description here

Nach:

enter image description here

Ich hoffe, es hilft.

EDIT:

Sie können auf diese Weise Hintergrundbild gesetzt:

UITabBar.appearance().backgroundImage = UIImage(named: "yourImageWithTopYellowBorder.png") 
+0

Dies verbirgt die obere Grenze, aber ich möchte eine Grenze mit Farbe. – TIMEX

+0

Ich denke, Sie können jetzt Hintergrundbild festlegen, die obere Grenze mit gelber Farbe haben. –

+0

Danke. Welche Dimensionen sollte das Bild haben? – TIMEX

0

Es gibt eine Eigenschaft mit dem Namen ist shadowImage, die in iOS eingeführt wurde, 6. Sie können dies die obere Grenze zu ändern, ändern. Zum Beispiel können Sie ein 1x1px Bild mit einer einzigen Farbe verwenden, um die obere Grenze zu dieser Farbe zu ändern:

UITabBar.appearance().shadowImage = UIImage(named: "TabBarShadow") 

Sie können auch festlegen, wie gerade UIImage() vollständig die obere Grenze zu entfernen.

UITabBar.appearance().shadowImage = UIImage() 

Um Ihre Frage zu einer 5px Grenze zu beantworten, kann dies durch die Verwendung eines 1x5px Bildes erfolgen. Es scheint keine Begrenzung für die Größe des Bildes zu geben und es wird einfach wiederholt (Sie könnten also eine gepunktete Linie haben, zum Beispiel mit einem 4x5px Bild, wo die ersten 2x5px schwarz und die nächsten 2x5px transparent sind). Beachten Sie, dass sich der Inhalt außerhalb der Grenzen der UITabBar befindet, sodass der Inhalt hinter dem Bild angezeigt wird, sofern Sie die Ansichtsgrenzen nicht ändern.

4

Wenn Sie vollständig Tab-Leiste zu entfernen, setzen Sie diese in Ihrem AppDelegate:

UITabBar.appearance().shadowImage = UIImage() 
UITabBar.appearance().backgroundImage = UIImage() 
3

SWIFT 3

I Grenze Farben benötigt (und Linienfarben und Gewichte) andere Elemente passen in meine app, für mich so arbeitete in meinem benutzerdefinierten viewDidLoad des UITabBarController:

tabBar.layer.borderWidth = 0.3 
tabBar.layer.borderColor = UIColor(red:0.0/255.0, green:0.0/255.0, blue:0.0/255.0, alpha:0.2).cgColor 
tabBar.clipsToBounds = true 
+3

nicht die richtige Antwort, dies fügt Grenze nach unten, links, rechts und oben – Oscar

3

Dies ist die komplette Lösung, sO verschiedener kompilierte ein swers, die für mich (Swift 3) gearbeitet:

// The tabBar top border is done using the `shadowImage` and `backgroundImage` properties. 
// We need to override those properties to set the custom top border. 
// Setting the `backgroundImage` to an empty image to remove the default border. 
tabBar.backgroundImage = UIImage() 
// The `shadowImage` property is the one that we will use to set the custom top border. 
// We will create the `UIImage` of 1x5 points size filled with the red color and assign it to the `shadowImage` property. 
// This image then will get repeated and create the red top border of 5 points width. 

// A helper function that creates an image of the given size filled with the given color. 
// http://stackoverflow.com/a/39604716/1300959 
func getImageWithColor(color: UIColor, size: CGSize) -> UIImage 
{ 
    let rect = 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 
} 

// Setting the `shadowImage` property to the `UIImage` 1x5 red. 
tabBar.shadowImage = getImageWithColor(color: UIColor.red, size: CGSize(width: 1.0, height: 5.0)) 
2

einfach den UITabBar Background und ShadowImageTM klare Farbe sein:

tabBar.shadowImage = UIImage.init(color: UIColor.clear) 
tabBar.backgroundImage = UIImage.init(color: UIColor.clear) 
0

Es ist ein Schattenbild (Eigentum) von Tabbar. Versuchen Sie folgende Lösungen und sehen Sie.

** Swift **

//Remove shadow image by assigning nil value. 
UITabBar.appearance().shadowImage = nil 

// or 

// Assing UIImage instance without image reference 
UITabBar.appearance().shadowImage = UIImage() 

** Objective-C **

//Remove shadow image by assigning nil value. 
[[UITabBar appearance] setShadowImage: nil]; 

// or 

// Assing UIImage instance without image reference 
[[UITabBar appearance] setShadowImage: [[UIImage alloc] init]]; 


Hier ist Apfel-Richtlinie für shadowImage.

@available(iOS 6.0, *) 
open var shadowImage: UIImage? 

Standard ist gleich Null. Wenn nicht-null, wird ein benutzerdefiniertes Schattenbild angezeigt, das anstelle des Standard-Schattenbildes angezeigt wird. Damit ein benutzerdefinierter Schatten angezeigt wird, muss ein benutzerdefiniertes Hintergrundbild ebenfalls mit -setBackgroundImage festgelegt werden: (Wenn das Standardhintergrundbild verwendet wird, wird das Standardschattenbild verwendet).

1
UIView *borderLine = [[UIView alloc] initWithFrame:CGRectMake(0, 0, screenWidth, 5.0)]; 
    borderLine.backgroundColor = [UIColor yellowColor]; 
    [self.tabBarController.tabBar addSubview:borderLine]; 

Dies ist die Art und Weise Grenze zu einem UITabBar hinzuzufügen, die ich folgen. Es funktioniert cool.