2012-02-24 3 views

ответ

16

Правильный ответ - это тоталитарный ... FYI. https://stackoverflow.com/a/14448645/627299

Ответ на этот вопрос приведен ниже для справки.


Вот что я сделал с моим белым фоном панели инструментов ...

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

Может быть, вы могли бы сделать то же самое с вашим цветом вместо этого.

+13

Это намного чище использовать whiteToolBar.clipToBounds = YES – jomafer

122

Вы можете сделать так:

self.navigationController.toolbar.clipsToBounds = YES; 
+0

спасибо, что я искал это. – quarac

+2

Это не помогло мне в iOS 6 – DrMickeyLauer

+2

Это работает и для голого UIToolbar; не должен быть частью навигационного контроллера. – starkos

4

Установка стиля в UIBarStyleBlackTranslucent сделал это для меня (IOS 6)

2

это не работает последовательно на версиях IOS, кажется, не работает на iOS7. я ответил на этот другой вопрос: https://stackoverflow.com/a/19893602/452082 и вы можете изменить это решение просто удалить фон тень (и оставить свой toolbar.backgroundColor любой понравившийся вам цвет)

39
toolbar1.clipsToBounds = YES; 

работал для меня упаковывают кто-то еще пытается с Навигационный бар

+1

Это приводит к тому, что дно обрезается на границе безопасной зоны на iPhone X –

1

я немного запутались с этими ответами, но мне не хватало того, что вы были с помощью Выпускного так просто чтобы быть ясно здесь стремительным код, который я использовал, чтобы скрыть границы:

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

я перетащил в olbar в нижней части представления для этого, и это не верхняя панель навигации, к которой относятся другие вопросы.

+0

Отлично, это сработало. Не могли бы вы объяснить, почему? Благодарю. – redcurry

6

setShadowImage на [UIImage новый]

+1

Без сомнения, правильный ответ – beebcon

0

clipsToBounds техника клипы тень UIToolbar, а также вид фона. На iPhone X это означает, что фон больше не выходит за пределы safe area.

Incorrect UIToolBar on iPhone X

Раствор ниже использует маску, чтобы обрезать только верхнюю часть UITabBar. Маска отображается в подклассе UIToolBar, а рамка маски обновляется с переопределением 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

+0

Это работает для меня на любом устройстве, но iPhone X. Я скопировал строку кода для строки, создав новый класс Swift и указав класс в Interface Builder. –

+0

@ E-Madd Возможно, интерфейс Builder - это разница. В нашей установке мы программно создаем UINavigationController с подклассом UINavigationBar и UIToolbar, например: 'let navigationController = UINavigationController (navigationBarClass: NavigationBar.self, toolbarClass: Toolbar.self)' –

+0

Я реорганизовал это без изменений. У меня все еще есть граница. На самом деле это, по-видимому, разрыв между основным видом и панелью инструментов. –

1

создать 1 пиксель х 1 пиксель четкое изображение и назовите его clearPixel.png

toolbar.setShadowImage(UIImage(named: "clearPixel.png"), forToolbarPosition: UIBarPosition.any) 
+2

Также можно просто выполнить 'UIImage()', нет необходимости в активе – Joey

Смежные вопросы