wake-up-neo.com

wie kann ich den oberen Rand von UIToolBar entfernen?

Ich habe meine UIToolBar-Tönungsfarbe auf einen Wert gesetzt, und es gibt diese Grenzlinie, die ich sehe, in der ich entfernen möchte:

enter image description here

Wie entferne ich diesen schwarzen Rand?

50
adit

Die richtige Antwort ist die von totalitären ... FYI. https://stackoverflow.com/a/14448645/627299

Meine Antwort ist noch unten als Referenz.


Folgendes habe ich mit meiner weißen Hintergrundsymbolleiste gemacht ...

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

Vielleicht könnten Sie stattdessen dasselbe mit Ihrer Farbe machen.

19
Keenan

Das kannst du so machen:

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

Hat für mich gearbeitet, falls noch jemand mit der Navigationsleiste versucht

setShadowImage auf [UIImage new]

12
Cherpak Evgeny

Wenn Sie den Stil auf UIBarStyle Black Translucent setzen, wurde dies für mich getan (iOS 6).

4
DrMickeyLauer

erstellen Sie ein 1 Pixel x 1 Pixel großes klares Bild und nennen Sie es clearPixel.png

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

dies funktioniert nicht konsistent bei iOS-Versionen, es scheint nicht bei iOS7 zu funktionieren. Ich habe dies in einer anderen Frage beantwortet: https://stackoverflow.com/a/19893602/452082 und Sie können diese Lösung ändern, um nur den Hintergrundschatten zu entfernen (und Ihren toolbar.backgroundColor in jeder beliebigen Farbe zu lassen).

2
natbro

Diese Antworten haben mich etwas verwirrt, aber ich habe den Punkt verpasst, dass Sie ein Outlet verwendet haben. Um nur klar zu sein, hier der Swift-Code, mit dem ich die Grenze verdeckte:

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
    }
}

Ich hatte dazu eine Symbolleiste an den unteren Rand einer Ansicht gezogen, und es ist nicht die obere Navigationsleiste, auf die sich andere Fragen beziehen.

1
GazB

Die clipsToBounds-Technik schneidet den Schatten der UIToolBar sowie die Hintergrundansicht. Auf einem iPhone X bedeutet dies, dass der Hintergrund nicht mehr außerhalb des sicheren Bereichs liegt.

Incorrect UIToolBar on iPhone X

Die Lösung unten verwendet eine Maske, um nur die Oberseite der UITabBar zu beschneiden. Die Maske wird in einer UIToolBar-Unterklasse gerendert und der Maskenrahmen wird in einer Überschreibung von layoutSubviews aktualisiert.

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