web-dev-qa-db-fra.com

Comment puis-je changer la bordure supérieure de mon UITabBar?

Je voudrais que UITabBar ait une bordure supérieure de largeur 5.0. La bordure doit être de couleur jaune .. Je ne veux pas de bordure gauche/inférieure/droite.

La bordure de la barre d'onglets doit être plate (pas d'ombre ou quoi que ce soit du genre).

Comment puis-je supprimer une ligne d'ombre (image)?

12
TIMEX

Vous pouvez le faire de cette façon dans votre FirstViewController.Swift:

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

Et le résultat sera:

Avant:

 enter image description here

Après:

 enter image description here

J'espère que ça aide.

MODIFIER:

Vous pouvez définir l'image de fond de cette façon:

UITabBar.appearance().backgroundImage = UIImage(named: "yourImageWithTopYellowBorder.png")
28
Dharmesh

Voici la solution complète, composée de différentes SO réponses, qui a fonctionné pour moi ( Swift 3 ):

// 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))
5
iurii

Si vous voulez supprimer complètement la barre de tabulation, mettez ceci dans votre AppDelegate:

UITabBar.appearance().shadowImage = UIImage()
UITabBar.appearance().backgroundImage = UIImage()
4
James

Swift 3

J'avais besoin de couleurs de bordure (ainsi que de couleurs et de poids de lignes) pour correspondre aux autres éléments de mon application. Cela a donc fonctionné pour moi dans mon UITU BarBontController personnalisé

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
A.J. Hernandez
    UIView *borderLine = [[UIView alloc] initWithFrame:CGRectMake(0, 0, screenWidth, 5.0)];
    borderLine.backgroundColor = [UIColor yellowColor];  
    [self.tabBarController.tabBar addSubview:borderLine];

C'est le moyen d'ajouter une bordure à une UITabBar que je suis .

2
ABHILASH P

Il suffit de définir les propriétés backgroundImage et shadowImage de UITabBar en tant que couleur claire:

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

Il existe une propriété nommée shadowImage qui a été introduite dans iOS 6. Vous pouvez modifier cette propriété pour modifier la bordure supérieure. Par exemple, vous pouvez utiliser une image 1x1px avec une couleur unique pour modifier la bordure supérieure de cette couleur:

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

Vous pouvez également le définir en tant que UIImage() pour supprimer complètement la bordure supérieure.

UITabBar.appearance().shadowImage = UIImage()

Pour répondre à votre question sur une bordure de 5 pixels, vous pouvez le faire en utilisant une image 1x5 pixels. Il ne semble pas y avoir de limite à la taille de l’image et celle-ci se répète (vous pouvez donc avoir une ligne en pointillé, par exemple en créant une image 4x5px où les premiers 2x5px sont noirs et les prochains 2x5px transparents). Notez que si vous l'utilisez, il se trouve en dehors des limites de la barre UITabBar. Par conséquent, le contenu sera placé derrière l'image, sauf si vous modifiez les limites de la vue.

0
Ben Dodson

C'est une image d'ombre (propriété) de la barre de tabulation. Essayez les solutions suivantes et voyez.

** Rapide **

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

// or 

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

** Objectif 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]];


Voici le guide Apple pour shadowImage .

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

La valeur par défaut est zéro. Si non nil, une image d'ombre personnalisée à afficher à la place de l'image de l'ombre par défaut. Pour qu'une ombre personnalisée soit affichée, utilisez une personnalisation L’image d’arrière-plan doit également être définie avec -setBackgroundImage: (si l’image d’arrière-plan par défaut est utilisée, l’image d’ombre par défaut sera utilisée).

0
Krunal