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

swift - change color of top UIToolbar border

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

我试过了:

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

那没用。

建议?谢谢

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

如果你想要 250 作为你的红色值,你需要做 250/255。我遇到了同样的问题,发现只需在值后添加 /255,颜色就会按预期工作。

/255 在适当的范围内创建值。您也可以进行除法并输入小数近似值。

如果您需要更多帮助或说明,请告诉我。

如果您不喜欢它的颜色,并且无法更改它,最快的方法就是去除细线 - 它实际上不是边框,而是阴影。

toolbar.clipsToBounds = true

或:

toolbar.layer.shadowOpacity = 0

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

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

结果:

来源:https://blog.adamcooke.io/set-the-top-border-colour-of-a-uinavbar-d9035c6b4fdb#.f37molpsj

您可以使用:

- (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];