Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
swift-更改顶部UIToolbar边框的颜色_Swift_Uitoolbar - Fatal编程技术网

swift-更改顶部UIToolbar边框的颜色

swift-更改顶部UIToolbar边框的颜色,swift,uitoolbar,Swift,Uitoolbar,我正在尝试更改UIToolbar上上边框的颜色 我试过: layer.borderWidth = 1 layer.borderColor = UIColor(r: 250, g: 250, b: 250).CGColor 那没用 建议?谢谢UIColor在0和1之间工作,例如: layer.borderWidth = 1 layer.borderColor = UIColor(r: 250/255, g: 250/255, b: 250/255).CGColor 如果您想要250作为红色值,

我正在尝试更改UIToolbar上上边框的颜色

我试过:

layer.borderWidth = 1
layer.borderColor = UIColor(r: 250, g: 250, b: 250).CGColor
那没用


建议?谢谢

UIColor在0和1之间工作,例如:

layer.borderWidth = 1
layer.borderColor = UIColor(r: 250/255, g: 250/255, b: 250/255).CGColor
如果您想要250作为红色值,则需要执行250/255。我也遇到了同样的问题,发现只要在值后面加上/255,颜色就可以正常工作

/255在适当的范围内创建值。你也可以做除法,然后输入十进制近似值


如果你需要更多的帮助或澄清,请告诉我。

如果你不喜欢它的颜色,并且因为不可能改变它,最快的破解方法就是去掉它的发际线-它实际上不是一个边界,它是一个阴影

toolbar.clipsToBounds = true
或:

或者您可以更改其阴影图像:

UITabbar.appearance().shadowImage = UIImage.colorForNavBar(.red)

您需要将RGB颜色除以255.0,以获得0:1的颜色

例如:

layer.borderWidth = 1
layer.borderColor = UIColor(r: 250/255, g: 250/255, b: 250/255).CGColor

我使用以下代码完成了此操作:

class ViewController: UIViewController {
  
  @IBOutlet weak var toolBar: UIToolbar!
  
  override func viewDidLoad() {
    super.viewDidLoad()
    
    // the layer with the width of the device
    // and height of 0.5 px
    let topBorder = CALayer()
    topBorder.frame = CGRectMake(0, 0, view.frame.size.width, 0.5)
    topBorder.backgroundColor = UIColor.redColor().CGColor
    
    // adding the layer to the top
    // of the toolBar
    toolBar.layer.addSublayer(topBorder)
  }
}
结果:

来源:

您可以使用:

- (void)setToolbarLineWith:(UIColor *)color
{
    for(UIView *v in self.navigationController.toolbar.subviews){
        if([NSStringFromClass([v class]) isEqualToString:@"_UIBarBackground"])
        {
            for(UIView *w in v.subviews){
                if([NSStringFromClass([w class]) isEqualToString:@"UIImageView"])
                {
                    [w setBackgroundColor:color];
                }
            }
        }
    }
}
并与以下内容一起运行:

[self setToolbarLineWith:[UIColor redColor]];

这实际上是一个阴影图像,所以只需创建一些带有必要颜色的1像素图像并使用

[toolbar setShadowImage:<your image> forToolbarPosition:UIBarPositionAny];
[工具栏设置ShadowImage:forToolbarPosition:UIBarPositionAny];

我有一个扩展可以为我做这件事。对不起,我应该澄清一下。谢谢你抽出时间!这是个玩笑吗?当然,我把它添加到了视图中,我的问题不是看不到工具栏,而是让上边框变成一种特定的颜色。这段代码无法编译@佩德罗:沃克,你能说清楚点吗?代码只是一个例子,因为我可能不太理解你的问题。无论如何,它是用Swift 3编写的。工具栏控件的顶部有一个边框。这是一条有点粗的灰线。我想修改工具栏顶部的边框,使其成为我想要的颜色。谢谢,有没有办法不在顶部添加一个1像素宽的视图和我想要的颜色?可以循环UITabbar/UIToolbar的子视图-但是如果使用这种方式,在循环中传递视图时,您也可以更改该颜色。您下面的人建议这样做,我提到我有一个UIColor的扩展,这就是为什么我不分割,因为扩展为我。非常感谢。