Iphone 如何删除UIToolBar上的上边框

Iphone 如何删除UIToolBar上的上边框,iphone,objective-c,ios,ipad,Iphone,Objective C,Ios,Ipad,我已将UIToolBar的“染色颜色”设置为某个值,并且我看到了要删除的边框线: 我该如何去除这条黑边>正确答案是极权主义者的答案……仅供参考 我的答复仍在下面,以供参考 下面是我用白色背景工具栏所做的 whiteToolBar.layer.borderWidth = 1; whiteToolBar.layer.borderColor = [[UIColor whiteColor] CGColor]; 也许你可以用你的颜色做同样的事情。你可以这样做: self.navigation

我已将UIToolBar的“染色颜色”设置为某个值,并且我看到了要删除的边框线:


我该如何去除这条黑边>

正确答案是极权主义者的答案……仅供参考

我的答复仍在下面,以供参考


下面是我用白色背景工具栏所做的

whiteToolBar.layer.borderWidth = 1;
whiteToolBar.layer.borderColor = [[UIColor whiteColor] CGColor];    
也许你可以用你的颜色做同样的事情。

你可以这样做:

self.navigationController.toolbar.clipsToBounds = YES;

将样式设置为UIBarStyleBlackTranslucent是为我做的(iOS 6)

这在iOS版本上不一致,在iOS 7上似乎不起作用。我在另一个问题中回答了这个问题:您可以修改该解决方案,只删除背景阴影(并保留
工具栏.backgroundColor
任何您喜欢的颜色)


为我工作,如果有人仍在尝试导航栏,我对这些答案感到有点困惑,但我忽略了一点,即您使用的是插座,因此为了清楚起见,这里是我用来隐藏边框的swift代码:

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

为此,我将工具栏拖到了视图的底部,但它不是顶部导航栏,其他一些问题也涉及到了它。

将shadowimage设置为[UIImage new]

使用
剪辑工具栏
技术剪辑UIToolBar的阴影以及背景视图。在iPhoneX上,这意味着背景不再延伸到外部

下面的解决方案使用遮罩仅剪裁UITabBar的顶部。遮罩在UIToolBar子类中呈现,遮罩框架在
布局子视图
的覆盖中保持更新

类工具栏:UIToolbar{ fileprivate let maskLayer:CALayer={ let layer=CALayer() layer.backgroundColor=UIColor.black.cgColor 返回层 }() 重写初始化(帧:CGRect){ super.init(frame:frame) 初始化() } 必需的初始化?(编码器aDecoder:NSCoder){ super.init(编码者:aDecoder) 初始化() } fileprivate func initialize(){ layer.mask=maskLayer //在此自定义工具栏 } 覆盖func布局子视图(){ super.layoutSubviews() //高度是大于UIToolbar顶部到屏幕底部距离的任意数字 maskLayer.frame=CGRect(x:-10,y:0,宽度:frame.width+20,高度:500) } }

创建一个1像素x 1像素的清晰图像,并将其命名为clearPixel.png

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


这对我在iOS 6中的工作没有帮助,这也适用于裸UIToolbar;不必是导航控制器的一部分。在iOS 7.x和SDK 7.Nico上就像一个符咒一样工作,这是因为“clipsToBounds”只在其边界内绘制视图。在这种情况下,层的边框绘制在视图的边界之外,因此将“clipsToBounds”设置为true“disable”它的边框。
clipsToBounds=YES
会打断iPhone X上工具栏的外观。它会隐藏顶部边框,但它也阻止了工具栏的背景延伸到屏幕的底部边缘。对于@jomafer的评论,使用whiteToolBar.cliptobunds=YESSwift更为简洁:
myToolbar.clipsToBounds=true
我在此加入人们俱乐部,感谢他们过去在Interface Builder或如上所述中对边界的自定义剪辑,是的。更好的解决方案。
clipToBounds
不是理想的解决方案,因为它会使安全区域保持空白。很好,这很有效。你能解释一下为什么吗?谢谢。毫无疑问,正确的答案是这是您需要使用的答案,以避免在安全区域(如iPhone X底部)丢失工具栏颜色,即[self-setShadowImage:UIImage.new-forToolbarPosition:UIBarPositionAny];这适用于除iPhone X以外的任何设备。我将代码行逐行复制,创建了一个新的Swift类,并在Interface Builder中指定了该类。@E-Madd可能是Interface Builder的不同之处。在我们的设置中,我们以编程方式创建带有UINavigationBar和UIToolbar子类的UINavigationController,如下所示:
let navigationController=UINavigationController(navigationBarClass:NavigationBar.self,toolbarClass:Toolbar.self)
。我还有边界。实际上,它似乎是主视图和工具栏之间的一个间隙。这导致在iPhone XCan上,底部在安全区域边界处被切断,也可以简单地执行
UIImage()
,不需要资源
toolbar.setShadowImage(UIImage(named: "clearPixel.png"), forToolbarPosition: UIBarPosition.any)
navigationController?.toolbar.barTintColor = .white

navigationController?.toolbar.setShadowImage(UIImage(), forToolbarPosition: .any)
[[UIToolbar appearance] setBackgroundImage:[[UIImage alloc] init] forToolbarPosition:UIBarPositionBottom barMetrics:UIBarMetricsDefault];

[[UIToolbar appearance] setShadowImage:[[UIImage alloc] init] forToolbarPosition:UIBarPositionBottom];

[UIToolbar appearance].barTintColor = [UIColor ...];```