2015-05-01 2 views
1

с прошивкой 7, теперь довольно легко добавить размытие UINavigationBar, даже с BarTint см http://blog.ashleynh.me/frosted-uinavigationbar/ и этот пример изображения:Прозрачный UINavigationBar без границ

enter image description here

Однако есть граница на дно. Как я могу избавиться от границы, чтобы больше походить на это?

enter image description here

UPDATE:

Я взял Дэнни и Шали код с, и вот результаты. Как вы можете видеть, граница больше не отображается, но нет размытия.

let navigationBarAppearance = UINavigationBar.appearance() 
navigationBarAppearance.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default) 
navigationBarAppearance.shadowImage = UIImage() 
navigationBarAppearance.translucent = true 

enter image description here

и вот скриншот инспектор:

enter image description here

Я также попытался:

let navigationBarAppearance = UINavigationBar.appearance() 
let clearImage = UIImage.imageWithColor(UIColor.clearColor()) 
navigationBarAppearance.setBackgroundImage(clearImage, forBarMetrics: UIBarMetrics.Default) 
navigationBarAppearance.shadowImage = clearImage 
navigationBarAppearance.translucent = true 

Тот же результат, но инспектор немного отличается:

enter image description here

+0

Вам не нужна строка состояния сверху, которая имеет время, состояние батареи и т. Д.? –

+0

Не совсем. Хотя это довольно легко изменить с помощью: 'override func prefersStatusBarHidden() -> Bool { return true }' – Dean

ответ

0

Вы изучали навигациюBar.shadowImage = [UIImage new]; ?

+0

Да, но, похоже, не работает. – Dean

+0

Я также пробовал '.setBackgroundImage (UIImage(), forBarMetrics: UIBarMetrics.Default)', который избавляется от границы, но нет размытия. – Dean

+0

Я установил '.barTintColor = UIColor (красный: 0.0, зеленый: 0.0, синий: 0.0, alpha: 0.2)' и '.translucent = true', и я проверил в Inspector, что это правильно. 'ShowImage',' BackImage' и 'BackMask' - все' Empty Selection' – Dean

1

Яблоко Документы: https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UINavigationBar_Class/index.html#//apple_ref/occ/instp/UINavigationBar/shadowImage

Значение по умолчанию равно нулю, что соответствует по умолчанию тень изображение. Когда не-nil, это свойство представляет собой пользовательский теневой образ для show вместо стандартного. Для пользовательского изображения теней, которое должно быть отображено, необходимо также создать настраиваемое фоновое изображение setBackgroundImage: forBarMetrics: method. Если используется фоновое изображение по умолчанию , тогда изображение теней по умолчанию будет использоваться независимо от значения этого свойства.

Так что вам нужно установить фоновое изображение перед установкой shadowImage, чтобы он работал.

Редактировать

Изображение генерируется из цветов (Swift) в качестве фона навигации. Не уверен, что ваша функция размытия по-прежнему будет работать при изменении backgroundImage для панели навигации. Это была бы другая проблема.

class func imageWithColor(color: UIColor) -> UIImage { 
    let rect = CGRectMake(0, 0, 1, 1) 
    UIGraphicsBeginImageContextWithOptions(rect.size, false, 0) 
    color.setFill() 
    UIRectFill(rect) 
    var image = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    return image 
} 
+0

Спасибо Шали, что мне нужно, чтобы установить 'ShadowImage'? Я хочу, чтобы изображение под 'UINavigationBar' отображалось, поэтому' UINavigationBar' не знает, что это за изображение. – Dean

+0

@Dean Если вы хотите скрыть линию, просто сделайте так, как сказал Дэнни. Вы хотите, чтобы изображение просматривалось, вы можете нарисовать изображение с четким цветом. Я добавлю функцию генерации изображения из цвета. –

+0

Спасибо Шали. PS., Любите код расширения для 'UIImage'. Я установил полупрозрачный, установил barTint в nil и 'ShadowImage' на' UIImage' с 'UIColor.clearColor()', BackImage и BackMask все еще говорят «Empty Selection». Я получаю тот же результат, что и с .setBackgroundImage (UIImage(), forBarMetrics: UIBarMetrics.Default) 'и' .shadowImage = UIImage() '. – Dean

Смежные вопросы