Ios 透明UIImage在navBar中不可传输

Ios 透明UIImage在navBar中不可传输,ios,swift,uiimage,uinavigationbar,Ios,Swift,Uiimage,Uinavigationbar,我已经创建了一个白色图像,0.2上有一个白色alpha。但是,当我添加它时,它在导航栏中似乎并不透明。它是完全白色的。我对tabBar做了同样的事情,效果很好。我做错了什么。这在viewControllers ViewDidLoad中: self.navigationController?.navigationBar.setBackgroundImage(UIImage(named: "Navbar"), forBarMetrics: UIBarMetrics.Default) let new

我已经创建了一个白色图像,0.2上有一个白色alpha。但是,当我添加它时,它在导航栏中似乎并不透明。它是完全白色的。我对tabBar做了同样的事情,效果很好。我做错了什么。这在viewControllers ViewDidLoad中:

self.navigationController?.navigationBar.setBackgroundImage(UIImage(named: "Navbar"), forBarMetrics: UIBarMetrics.Default)
let newNavBar = UIImage(named: "navBar")!.alpha(0.2)

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

当不使用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中:

self.navigationController?.navigationBar.setBackgroundImage(UIImage(named: "Navbar"), forBarMetrics: UIBarMetrics.Default)
let newNavBar = UIImage(named: "navBar")!.alpha(0.2)

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