透明UIImage在navBar中不是tranrperent

时间:2015-10-04 17:55:08

标签: ios swift uiimage uinavigationbar

我在0.2上创建了一张白色alpha的白色图像。但是当我添加它时,它在navigationBar中似乎并不透明。它完全是白色的。我用tabBar做了同样的事情,效果很好。我究竟做错了什么。这是在viewControllers ViewDidLoad:

self.navigationController?.navigationBar.setBackgroundImage(UIImage(named: "Navbar"), forBarMetrics: UIBarMetrics.Default)

enter image description here

1 个答案:

答案 0 :(得分:0)

使用UIImageView时控制UIImage的alpha值的一种万无一失的方法不是选择给图像初始alpha为1,然后添加这个UIImage扩展名:

extension UIImage{

func alpha(value:CGFloat)->UIImage
{
    UIGraphicsBeginImageContextWithOptions(self.size, false, 0.0)

    let ctx = UIGraphicsGetCurrentContext();
    let area = CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height);

    CGContextScaleCTM(ctx, 1, -1);
    CGContextTranslateCTM(ctx, 0, -area.size.height);
    CGContextSetAlpha(ctx, value);
    CGContextDrawImage(ctx, area, self.CGImage);

    let newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return newImage;
}
}

...然后在ViewDidLoad中:

let newNavBar = UIImage(named: "navBar")!.alpha(0.2)

self.navigationController?.navigationBar.setBackgroundImage(UIImage(named: "newNavBar"), forBarMetrics: UIBarMetrics.Default)