Як приховати підсумок UINavigationBar 1px


443

У мене є додаток, якому іноді потрібна його панель навігації, щоб поєднатися із вмістом.

Хтось знає, як позбутися або змінити колір цієї набридливої ​​маленької смужки?

На зображенні нижче ситуації, що в мене є - я говорю про цю лінійку висоти 1px нижче "Кореневий контролер"

введіть тут опис зображення


переглянути це: stackoverflow.com/questions/19101361/…
Kuldeep

як збільшити 1пкс висоти навігації?
Суреш Дурішетті

Відповіді:


738

Для iOS 13:

Використовуйте .shadowColorмайно

Якщо ця властивість є нульовою або містить чіткий колір, на панелі не відображається тіні

Наприклад:

let navigationBar = navigationController?.navigationBar
let navigationBarAppearence = UINavigationBarAppearance()
navigationBarAppearence.shadowColor = .clear
navigationBar?.scrollEdgeAppearance = navigationBarAppearence

Для iOS 12 і нижче:

Для цього слід встановити власне тіньове зображення. Але для показу тіньового зображення вам також потрібно встановити спеціальне фонове зображення, цитуючи документацію Apple:

Для відображення власного тіньового зображення також слід встановити спеціальне фонове зображення за допомогою методу setBackgroundImage (_: для :). Якщо використовується фонове зображення за замовчуванням, то тіньове зображення за замовчуванням буде використовуватися незалежно від значення цього властивості.

Тому:

let navigationBar = navigationController!.navigationBar
navigationBar.setBackgroundImage(#imageLiteral(resourceName: "BarBackground"),
                                                        for: .default)
navigationBar.shadowImage = UIImage()

Зверху - єдиний «офіційний» спосіб приховати це. На жаль, це знімає прозорість бару.

Я не хочу фонового зображення, а лише кольорового

У вас є такі варіанти:

  1. Суцільний колір, без напівпрозорості:

    navigationBar.barTintColor = UIColor.redColor()
    navigationBar.isTranslucent = false
    navigationBar.setBackgroundImage(UIImage(), for: .default)
    navigationBar.shadowImage = UIImage()
    
  2. Створіть невелике фонове зображення, наповнене кольором, і використовуйте його.

  3. Використовуйте описаний нижче метод "хакі". Він також буде тримати смугу напівпрозорою.

Як тримати смугу напівпрозорою?

Щоб зберегти прозорість, вам потрібен інший підхід, він схожий на злом, але працює добре. Тінь, яку ми намагаємося видалити, - це лінія волосся UIImageViewдесь під UINavigationBar. Ми можемо його знайти і приховати / показати, коли це потрібно.

Наведені нижче інструкції передбачають, що потрібна лінія волосся, прихована лише в одному контролері вашої UINavigationControllerієрархії.

  1. Оголосити змінну екземпляра:

    private var shadowImageView: UIImageView?
  2. Додати метод, який знаходить цю тінь (лінію волосся) UIImageView:

    private func findShadowImage(under view: UIView) -> UIImageView? {
        if view is UIImageView && view.bounds.size.height <= 1 {
            return (view as! UIImageView)
        }
    
        for subview in view.subviews {
            if let imageView = findShadowImage(under: subview) {
                return imageView
            }
        }
        return nil
    }
    
  3. Додавання / редагування viewWillAppear/viewWillDisappearметодів:

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
    
        if shadowImageView == nil {
            shadowImageView = findShadowImage(under: navigationController!.navigationBar)
        }
        shadowImageView?.isHidden = true
    }
    
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
    
        shadowImageView?.isHidden = false
    }
    

Цей же спосіб повинен працювати і для UISearchBarволосся, і (майже) всього іншого, що вам потрібно приховати :)

Велике спасибі @Leo Natan за оригінальну ідею!


103
Ви також можете просто встановити вигляд об'єкта UINavigationBarнерухомості:clipsToBounds = YES
розумний

3
@richarddas clipsToBounds = YESпрацює як шарм! Дякую!
Rromeouald

3
ClipsToBounds не завжди працює для деяких макетів. Ця відповідь спрацювала для мене ідеально. Тільки я створив підклас UINavigationBar і використав вищевказаний код, щоб приховати тіньове зображення в методах -layoutSubview. Дякую!
cgossain

7
Просто зауважте, у мене виникла проблема, коли мій рядок стану iOS став напівпрозорим, і я міг бачити, як мої таблиці прокручуються позаду UINavigationBar. Я це виправив, встановивши setTranslucent = НІ.
Влад

2
В iOS 10 здається, що коли viewWillAppear нас викликають, ми не зможемо отриматиshadowImageView
xi.lin

241

Нижче може допомогти просто!

Швидкий:

self.navigationController?.navigationBar.setValue(true, forKey: "hidesShadow")

Мета C:

[self.navigationController.navigationBar setValue:@(YES) forKeyPath:@"hidesShadow"];

6
Я перебуваю на Xcode 8 і розробник для> iOS 8, і нічого з перерахованого вище не працювало для мене, крім цього.
Вакас

2
Також на XCode 8 та> iOS 8. Це єдина відповідь, яка працювала для мене.
cloudcal

1
Це єдина коротка і проста відповідь, яка працювала для мене для iOS 10 і Xcode 8.3.1. Спасибі людина.
Vishal Sonawane

1
Objective-C: self.navigationController.navigationBar.shadowImage = [UIImage new];
Marcelo dos Santos

1
Лише це працює для мене в iOS 13.3.1 Версія iPad.
Раві

145

Якщо ви просто хочете використовувати суцільний колір панелі навігації та встановили це у своїй дошці повідомлень, використовуйте цей код у своєму AppDelegateкласі, щоб видалити межу 1 пікселя через проксі-сервер зовнішнього вигляду:

[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init]
                                  forBarPosition:UIBarPositionAny
                                      barMetrics:UIBarMetricsDefault];

[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];

2
Це встановлює його глобальним для ВСЬКОГО навігаційного рядка у вашій кодовій базі ... у більшості випадків не те, що ви хочете.
Крістоф

97

Спробуйте це:

[[UINavigationBar appearance] setBackgroundImage: [UIImage new]  
                                   forBarMetrics: UIBarMetricsDefault];

[UINavigationBar appearance].shadowImage = [UIImage new];

Нижче на зображенні є пояснення (iOS7 NavigationBar):

введіть тут опис зображення

І перевірте це питання ТАК: iOS7 - Зміна кольору межі UINavigationBar


Як сказав Сергій, для прийняття тіньового зображення потрібно встановити спеціальне фонове зображення.
акашівський

3
зробіть це у своєму AppDelegate.
myusuf3

Чудова відповідь ... Врятував мій день _ / \ _
Акшай

@RPM Чудово працює в iOS 7,8,9,10. Існує той самий код для навігаційної панелі viewControlles в середовищі для Swift.
Ахрамеєв

64

Хотів додати версію відповіді Сергія на Swift. Я створив UIBarExtension.swiftнаступне:

import Foundation
import UIKit

extension UINavigationBar {
    func hideBottomHairline() {
        self.hairlineImageView?.isHidden = true
    }

    func showBottomHairline() {
        self.hairlineImageView?.isHidden = false
    }
}

extension UIToolbar {
    func hideBottomHairline() {
        self.hairlineImageView?.isHidden = true
    }

    func showBottomHairline() {
        self.hairlineImageView?.isHidden = false
    }
}

extension UIView {
    fileprivate var hairlineImageView: UIImageView? {
        return hairlineImageView(in: self)
    }

    fileprivate func hairlineImageView(in view: UIView) -> UIImageView? {
        if let imageView = view as? UIImageView, imageView.bounds.height <= 1.0 {
            return imageView
        }

        for subview in view.subviews {
            if let imageView = self.hairlineImageView(in: subview) { return imageView }
        }

        return nil
    }
}

Дякую! Це має бути відповіддю.
PeiweiChen

Він працює з навігацією, але не працює з uitoolbar
TomSawyer

Я знаходжу з iOS 12, це більше не працює. :(.
Кріс Принс

Чудово працює iOS 13
ttorbik

Це має бути відповіддю. працює як шарм у ios 13
COVID19

63

Швидкий спосіб зробити це:

UINavigationBar.appearance().setBackgroundImage(
    UIImage(),
    forBarPosition: .Any,
    barMetrics: .Default)

UINavigationBar.appearance().shadowImage = UIImage()

2
Досить рідко потрапляти так далеко в список, перш ніж знайти найскладнішу відповідь. +1!
sudo make install

3
Він приховує весь фон UINavigationBar tho: /
user365314

Неправильно, він приховує і весь фон!
TomSawyer

3
Примітка: ви повинні встановити навігаціюBar's isTranslucent на false
dmathewwws

19

Просте рішення швидко

   let navigationBar = self.navigationController?.navigationBar
    navigationBar?.setBackgroundImage(UIImage(), forBarPosition: UIBarPosition.Any, barMetrics: UIBarMetrics.Default)
    navigationBar?.shadowImage = UIImage()

3
+1 З усіх відповідей саме це нарешті спрацювало для мене. Він не зіпсував рядок стану, як інші відповіді, і він вирішує проблему зміни лише однієї з панелей навігаційного контролера, а не всіх навігаційних панелей у проекті.
JoeGalind

? Свіфта версії 4.2: Панель навігації .setBackgroundImage (UIImage (), для: UIBarPosition.any, barMetrics: UIBarMetrics.default) Панель навігації .shadowImage = UIImage ()?
airowe

16

Вивчивши відповідь від Serhil, я створив стручок UINavigationBar + Addition, який легко приховує лінію волосся.

#import "UINavigationBar+Addition.h"

- (void)viewDidLoad {
    [super viewDidLoad];

    UINavigationBar *navigationBar = self.navigationController.navigationBar;
    [navigationBar hideBottomHairline];
}

16

У Swift 3.0

Відредагуйте свій AppDelegate.swiftдодавання наступного коду до функції програми:

// Override point for customization after application launch.

// Remove border in navigationBar
UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default)

16

На iOS 13 існує системний API для встановлення або видалення тіні

UIKit використовує shadowImage та властивість shadowColor для визначення зовнішності тіні. Якщо shadowImage дорівнює нулю, на панелі відображається тінь за замовчуванням, підфарбована відповідно до значення в властивості shadowColor. Якщо shadowColor є нульовим або містить колір clearColor, на панелі не відображається тіні.

    let appearance = UINavigationBarAppearance()
    appearance.shadowImage = nil
    appearance.shadowColor = nil
    navigationController.navigationBar.standardAppearance = appearance

https://developer.apple.com/documentation/uikit/uibarappearance/3198009-shadowimage


shadowImage та shadowColor не зафіксовані в UINavigationBarAppearanceзаголовках !! Я ніколи його не знайду. Дякую, це вирішило мої проблеми на 100%
Роджер Оба

1
Так, це добре працює і для мене в iOS 13, дуже дякую @glotcha.
Йогеш Патель

@glotcha Right ....
Digvijay

Дякую. єдине, що працювало на мене
alionthego

13

Також може бути приховано від «Розгортки» (працює над Xcode 10.1)

Додаючи атрибут виконання: hidesShadow - Boolean - True

введіть тут опис зображення


11

Оновлено рішення pxpgraphics для Swift 2.0

extension UINavigationBar {

    func hideBottomHairline()
    {
        hairlineImageViewInNavigationBar(self)?.hidden = true
    }

    func showBottomHairline()
    {
        hairlineImageViewInNavigationBar(self)?.hidden = false
    }

    private func hairlineImageViewInNavigationBar(view: UIView) -> UIImageView?
    {
        if let imageView = view as? UIImageView where imageView.bounds.height <= 1
        {
            return imageView
        }

        for subview: UIView in view.subviews
        {
            if let imageView = hairlineImageViewInNavigationBar(subview)
            {
                return imageView
            }
        }

        return nil
    }

}

extension UIToolbar
{

    func hideHairline()
    {
        let navigationBarImageView = hairlineImageViewInToolbar(self)?.hidden = true
    }

    func showHairline()
    {
        let navigationBarImageView = hairlineImageViewInToolbar(self)?.hidden = false
    }

    private func hairlineImageViewInToolbar(view: UIView) -> UIImageView?
    {
        if let imageView = view as? UIImageView where imageView.bounds.height <= 1
        {
            return imageView
        }

        for subview: UIView in view.subviews
        {
            if let imageView = hairlineImageViewInToolbar(subview)
            {
                return imageView
            }
        }

        return nil
    }

}

Привіт, новачок в iOS і намагаюся навчити себе. Як використовувати розширення? У мене є файл контролера перегляду, і я розміщую ці розширення в ньому поза межами області класу. Але як тоді я називаю функцію хованки / showHairline ()? Не дуже розумію, як використовувати розширення, але його використовують для такої кількості рішень, але я просто не розумію, як вони реалізовані у фактичному коді
Tommy K

Розширення додають функціональність існуючим класам. Будь-який розширений клас, структура, перерахунок тощо надаватимуть вам ці нові функції, коли потрібно використовувати їх. Детальніше дивіться тут: developer.apple.com/library/ios/documentation/Swift/Conceptual/…
tf.alves

хм, так що я просто повинен мати можливість використовувати UINavigationController().navigationBar/toolbar.hide/showBottomHairline()тоді ні? Я намагаюся це зробити, але безрезультатно. Хіба я не розумію правильно?
Tommy K

11

Swift 4 // для приховування тіньової лінії навігаційного рядка

navigationController?.navigationBar.shadowImage = UIImage()

10

Я використовую розширення UINavigationBar, яке дозволяє мені приховати / показати цю тінь за допомогою API UIAppearance або вибрати, на якій панелі навігації потрібно приховати / показати цю тінь за допомогою Storyboard (або вихідного коду). Ось розширення:

import UIKit

private var flatAssociatedObjectKey: UInt8 = 0

/*
  An extension that adds a "flat" field to UINavigationBar. This flag, when
  enabled, removes the shadow under the navigation bar.
 */
@IBDesignable extension UINavigationBar {
    @IBInspectable var flat: Bool {
        get {
            guard let obj = objc_getAssociatedObject(self, &flatAssociatedObjectKey) as? NSNumber else {
                return false
            }
            return obj.boolValue;
        }

        set {
            if (newValue) {
                let void = UIImage()
                setBackgroundImage(void, forBarPosition: .Any, barMetrics: .Default)
                shadowImage = void
            } else {
                setBackgroundImage(nil, forBarPosition: .Any, barMetrics: .Default)
                shadowImage = nil
            }
            objc_setAssociatedObject(self, &flatAssociatedObjectKey, NSNumber(bool: newValue),
                    objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
        }
    }
}

Тепер, щоб вимкнути тінь на всіх навігаційних панелях, які ви повинні використовувати:

UINavigationBar.appearance().flat = true

Або ви можете ввімкнути / відключити цю поведінку за допомогою розкадрів:

Розгалуження навігаційного рядка


@ NunoGonçalves, ви можете думати про flatAssociatedObjectKeyунікальний Int (трактується як вказівник) для ідентифікації асоційованого об'єкта. Тут визначається адреса пам'яті приватного var. Я оновив відповідь, щоб додати цю вару. Для отримання додаткової інформації див. Nshipster.com/associated-objects .
Альвіві

Гарне рішення, але працює лише тоді, коли для панелі навігації встановлено translucentзначення false
ZYiOS

9

Швидкий 4 Випробуваний ОДИН РЕШЕННЯ ЛІНІЇ

У Viewdidload() Встановіть значення користувача за замовчуванням для контролера навігації для ключа "hidesShadow"

override func viewDidLoad() {
    super.viewDidLoad()

    self.navigationController?.navigationBar.setValue(true, forKey: "hidesShadow")

}

1
Працює ідеально !!
Прашант Тукадія

7

Свіфт поставив це

UINavigationBar.appearance().setBackgroundImage(UIImage(), forBarPosition: .Any, barMetrics: .Default)
UINavigationBar.appearance().shadowImage = UIImage()

в

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool

І він також видаляє колір тла.
TomSawyer

7

Ще один варіант, якщо ви хочете зберегти прозорість і не хочете підкласирувати кожен UINavigationControllerу своєму додатку:

#import <objc/runtime.h>

@implementation UINavigationController (NoShadow)

+ (void)load {
    Method original = class_getInstanceMethod(self, @selector(viewWillAppear:));
    Method swizzled = class_getInstanceMethod(self, @selector(swizzled_viewWillAppear:));
    method_exchangeImplementations(original, swizzled);
}

+ (UIImageView *)findHairlineImageViewUnder:(UIView *)view {
    if ([view isKindOfClass:UIImageView.class] && view.bounds.size.height <= 1.0) {
        return (UIImageView *)view;
    }

    for (UIView *subview in view.subviews) {
        UIImageView *imageView = [self findHairlineImageViewUnder:subview];
        if (imageView) {
            return imageView;
        }
    }

    return nil;
}

- (void)swizzled_viewWillAppear:(BOOL)animated {
    UIImageView *shadow = [UINavigationController findHairlineImageViewUnder:self.navigationBar];
    shadow.hidden = YES;

    [self swizzled_viewWillAppear:animated];
}

@end

6
Slightly Swift Solution 
func setGlobalAppearanceCharacteristics () {
    let navigationBarAppearace = UINavigationBar.appearance()
    navigationBarAppearace.tintColor = UIColor.white
    navigationBarAppearace.barTintColor = UIColor.blue
    navigationBarAppearace.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
    navigationBarAppearace.shadowImage = UIImage()

}

Дякую Джеймсу! Я не можу зрозуміти, чому хтось вниз проголосував за вашу відповідь.
Dănuț Mihai Florian

якщо вам це потрібно, ви також можете додати: self.navigationController.navigationBar.translucent = помилковий self.navigationController.navigationBar.clipsToBounds = помилковий self.navigationController.navigationBar.shadowImage = UIImage () self.navigationColorrolarbackBar.avielneblordeclaller.navigation.Covirolor.blog.avi ()
Алессандро Орнано

5

Рішення в Swift 4.2:

private func removeHairlineFromNavbar() {
    UINavigationBar.appearance().setBackgroundImage(
        UIImage(),
        for: .any,
        barMetrics: .default)
    UINavigationBar.appearance().shadowImage = UIImage()
}

Просто поставте цю функцію на перший Viewcontroller і зателефонуйте до неї viewdidload


4

У iOS8, якщо ви встановите UINavigationBar.barStyleдля .Blackвас можна встановити фон бару як звичайний колір без кордону.

У Свіфті:

UINavigationBar.appearance().translucent = false
UINavigationBar.appearance().barStyle = UIBarStyle.Black
UINavigationBar.appearance().barTintColor = UIColor.redColor()

Це найчистіше рішення та найкращий спосіб досягти цього. Якщо вам не потрібно підтримувати <iOS 8, немає причин не використовувати цю відповідь. Дякую.
користувач3344977

Чудово працює. Я встановив його в раскадровці, тому навіть не потребував коду.
vikzilla

1
Це дає вам дуже крихітну білу лінію замість стандартної тіні.
Вегард

4

Рішення з двох ліній, яке працює для мене. Спробуйте додати це у методі ViewDidLoad:

navigationController?.navigationBar.setValue(true, forKey: "hidesShadow")
self.extendedLayoutIncludesOpaqueBars = true

тільки це працювало для мене
Усама бін Аттик

3

Ось дуже просте рішення:

self.navigationController.navigationBar.clipsToBounds = YES;

37
Також відсікається область рядка стану.
Fury

3

Просте рішення - Swift 5

  1. Створіть розширення:

    extension UIImage {
    
        class func hideNavBarLine(color: UIColor) -> UIImage? {
    
            let rect = CGRect(x: 0, y: 0, width: 1, height: 1)
            UIGraphicsBeginImageContext(rect.size)
            let context = UIGraphicsGetCurrentContext()
            context?.setFillColor(color.cgColor)
            context?.fill(rect)
    
    
            let navBarLine = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()
            return navBarLine
        }
    }
  2. Додайте це до viewDidLoad():

    self.navigationController?.navigationBar.shadowImage = UIImage.hideNavBarLine(color: UIColor.clear)

2

Для користувачів iOS 9 це працювало для мене. просто додайте це:

UINavigationBar.appearance().shadowImage = UIImage()

2

Проблема з налаштуванням фонового зображення полягає в тому, що він усуває розмиття. Ви можете видалити його, не встановлюючи фонове зображення. Дивіться мою відповідь тут .


2

Ви повинні додати вид у нижній частині UISearchBar

let rect = searchController.searchBar.frame;
let lineView : UIView = UIView.init(frame: CGRect.init(x: 0, y: rect.size.height-1, width: rect.size.width, height: 1))
lineView.backgroundColor = UIColor.init(hexString: "8CC73E")
searchController.searchBar.addSubview(lineView)

Я не можу повірити, що це все ще проблема - просто натрапив на це знову! Але це рішення є найкращим на даний момент; Дякуємо @Socheat
RichAppz

1

Я знаю, що це стара тема, але я знайшов рішення, яке працює дуже добре:

Підклас UINavigationBar. У підкласі UINavigationBar замініть didAddSubview із таким кодом:

- (void)didAddSubview:(UIView *)subview
{
    [super didAddSubview:subview];

    if ([subview isKindOfClass:[UIImageView class]]) {
        [subview setClipsToBounds:YES];
    }
}

1

Я просто створив розширення для цього ... Вибачте за форматування (це моя перша відповідь).

Використання:

  override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController?.hideShadow = true
}

Розширення:

 UINavigationController.swift
//  Created by Ricardo López Rey on 16/7/15.

import Foundation


struct UINavigationControllerExtension {
    static var hideShadowKey : String = "HideShadow"
static let backColor = UIColor(red: 247/255, green: 247/255, blue: 248/255, alpha: 1.0)
}

extension UINavigationController {

    var hideShadow : Bool {
        get {
            if let ret =  objc_getAssociatedObject(self, &UINavigationControllerExtension.hideShadowKey) as? Bool {
                return ret
            } else {
                return false
            }


        }
        set {
            objc_setAssociatedObject(self,&UINavigationControllerExtension.hideShadowKey,newValue, objc_AssociationPolicy(OBJC_ASSOCIATION_RETAIN_NONATOMIC))

            if newValue {


            self.navigationBar.setBackgroundImage(solidImage(UINavigationControllerExtension.backColor), forBarMetrics: UIBarMetrics.Default)

                self.navigationBar.shadowImage = solidImage(UIColor.clearColor())
            } else {
                self.navigationBar.setBackgroundImage(nil, forBarMetrics: UIBarMetrics.Default)
            }
        }
    }

    private func solidImage(color: UIColor, size: CGSize = CGSize(width: 1,height: 1)) -> UIImage {
        var rect = CGRectMake(0, 0, size.width, size.height)
        UIGraphicsBeginImageContextWithOptions(size, false, 0)
        color.setFill()
        UIRectFill(rect)
        var image: UIImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return image
    }


}

1

У AppDelegate це глобально змінило формат NavBar:

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    UINavigationBar.appearance().setBackgroundImage(UIImage(), forBarPosition: UIBarPosition.Any, barMetrics: UIBarMetrics.Default)
    UINavigationBar.appearance().shadowImage = UIImage()
    UINavigationBar.appearance().tintColor = UIColor.whiteColor()
    UINavigationBar.appearance().barTintColor = UIColor.redColor()
    UINavigationBar.appearance().translucent = false
    UINavigationBar.appearance().clipsToBounds = false
    UINavigationBar.appearance().backgroundColor = UIColor.redColor()
    UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName : (UIFont(name: "FONT NAME", size: 18))!, NSForegroundColorAttributeName: UIColor.whiteColor()] }

Не вдалося реалізувати щось інше на певному ВК, але це допоможе 90% людей


1
-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    UIImage *emptyImage = [UIImage new];
    self.navigationController.navigationBar.shadowImage = emptyImage;
    [self.navigationController.navigationBar setBackgroundImage:emptyImage forBarMetrics:UIBarMetricsDefault];
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.