web-dev-qa-db-fra.com

comment puis-je supprimer la bordure supérieure sur UIToolBar

J'ai défini la couleur de teinte UIToolBar sur une valeur et il y a cette ligne de bordure que je vois dans laquelle je veux supprimer:

enter image description here

Comment puis-je supprimer cette bordure noire>

50
adit

La bonne réponse est celle du totalitaire ... FYI. https://stackoverflow.com/a/14448645/627299

Ma réponse est toujours en dessous pour référence.


Voici ce que j'ai fait avec ma barre d'outils d'arrière-plan WHITE ...

whiteToolBar.layer.borderWidth = 1;
whiteToolBar.layer.borderColor = [[UIColor whiteColor] CGColor];    

Vous pourriez peut-être faire la même chose avec votre couleur à la place.

19
Keenan

Vous pouvez faire comme ça:

self.navigationController.toolbar.clipsToBounds = YES;
134
totalitarian
toolbar1.clipsToBounds = YES;  

A travaillé pour moi au cas où quelqu'un essaie encore avec la barre de navigation

46

setShadowImage à [UIImage nouveau]

12
Cherpak Evgeny

Définir le style sur UIBarStyle Black Translucent l’a fait pour moi (iOS 6)

4
DrMickeyLauer

créez une image claire de 1 pixel x 1 pixel et appelez-la clearPixel.png

toolbar.setShadowImage(UIImage(named: "clearPixel.png"), forToolbarPosition: UIBarPosition.any)
3
alionthego

cela ne fonctionne pas toujours sur les versions d'iOS, ne semble pas fonctionner sur iOS7. J'ai répondu à cela dans une autre question: https://stackoverflow.com/a/19893602/452082 et vous pouvez modifier cette solution pour supprimer simplement l'ombre de l'arrière-plan (et laisser votre toolbar.backgroundColor quelle que soit la couleur de votre choix)

2
natbro

Je suis un peu confus avec ces réponses mais je ne comprenais pas que vous utilisiez un point de vente, alors pour que tout soit clair, voici le code Swift que j'ai utilisé pour masquer la bordure:

import UIKit

class ViewController: UIViewController {

    //MARK Outlets
    @IBOutlet weak var ToolBar: UIToolbar!

    //MARK View Functions
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        // Hide the bottom toolbar's top border
        ToolBar.clipsToBounds = true
    }
}

J'avais traîné une barre d'outils au bas d'une vue pour cela et ce n'est pas la barre de navigation supérieure à laquelle d'autres questions font référence.

1
GazB

La technique clipsToBounds coupe l'ombre de UIToolBar ainsi que la vue d'arrière-plan. Sur un iPhone X, cela signifie que l’arrière-plan ne dépasse plus la zone safe .

 Incorrect UIToolBar on iPhone X

La solution ci-dessous utilise un masque pour ne découper que le haut de la barre UITabBar. Le masque est rendu dans une sous-classe UIToolBar et le cadre du masque est mis à jour dans un remplacement de layoutSubviews.

class Toolbar: UIToolbar {

    fileprivate let maskLayer: CALayer = {
        let layer = CALayer()
        layer.backgroundColor = UIColor.black.cgColor
        return layer
    }()

    override init(frame: CGRect) {
        super.init(frame: frame)
        initialize()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        initialize()
    }

    fileprivate func initialize() {
        layer.mask = maskLayer
        // Customize toolbar here
    }

    override func layoutSubviews() {
        super.layoutSubviews()
        // height is an arbitrary number larger than the distance from the top of the UIToolbar to the bottom of the screen
        maskLayer.frame = CGRect(x: -10, y: 0, width: frame.width + 20, height: 500)
    }

}

 Correct UIToolBar on iPhone X

1
Alex Givens
navigationController?.toolbar.barTintColor = .white

navigationController?.toolbar.setShadowImage(UIImage(), forToolbarPosition: .any)

 enter image description here

0
damo