2015-07-19 3 views
4

Я хочу, чтобы моя панель навигации имела оттенок цвета, но не полностью просвечивала. Вот код, у меня есть, и их результаты:Настройка панели навигации пользовательского интерфейса для частичного полупрозрачного изображения в Swift xCode

 UINavigationBar.appearance().setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default) 
    UINavigationBar.appearance().shadowImage = UIImage() 
    UINavigationBar.appearance().translucent = true 
    UINavigationBar.appearance().barTintColor = UIColor(red: 0, green: 107/255, blue: 178/255, alpha: 0.5) 

all translucent

Но если повернуть «полупрозрачный» ложь т.е. использовать этот код:

 UINavigationBar.appearance().setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default) 
    UINavigationBar.appearance().shadowImage = UIImage() 
    UINavigationBar.appearance().translucent = false 
    UINavigationBar.appearance().barTintColor = UIColor(red: 0, green: 107/255, blue: 178/255, alpha: 0.5) 

Я получаю этот результат: second result

Как заставить панель иметь значение альфа 0,5 или быть «полупрозрачным»?

Спасибо, любая помощь будет оценена по достоинству.

+0

попробуйте UINavigatio nBar.appearance(). Свойство tintColor –

ответ

0

Я бы установил полупрозрачное фоновое изображение для панели навигации.

Используйте этот код:

UINavigationBar.appearance().setBackgroundImage(UIColor.green.toImage()?.imageWithAlpha(alpha: 0.5), for: .default) 

Два расширения используются:

Создание UIImage из UIColor:

extension UIColor { 
     func toImage() -> UIImage? { 
      return toImageWithSize(size: CGSize(width: 1, height: 1)) 
     } 
     func toImageWithSize(size: CGSize) -> UIImage? { 
      UIGraphicsBeginImageContext(size) 

       if let ctx = UIGraphicsGetCurrentContext() { 
        let rectangle = CGRect(x: 0, y: 0, width: size.width, height: size.height) 
        ctx.setFillColor(self.cgColor) 
        ctx.addRect(rectangle) 
        ctx.drawPath(using: .fill) 
        let colorImage = UIGraphicsGetImageFromCurrentImageContext() 
        UIGraphicsEndImageContext() 
        return colorImage 
       } else { 
        return nil 
       } 
      } 
     } 

Создать новый UIImage из UIImage с указанной Альфой:

extension UIImage { 
    func imageWithAlpha(alpha: CGFloat) -> UIImage? { 
     UIGraphicsBeginImageContextWithOptions(size, false, scale) 
     draw(at: CGPoint.zero, blendMode: .normal, alpha: alpha) 
     let newImage = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 
     return newImage 
    } 
} 
Смежные вопросы