• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: iOS UINavigation background removal.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: iOS UINavigation background removal.


  • Subject: Re: iOS UINavigation background removal.
  • From: Alex Zavatone via Cocoa-dev <email@hidden>
  • Date: Fri, 28 Jan 2022 14:13:55 -0600

Hi David.  I hate to tell you, your code doesn’t work.

The old UINavigationBar background that I’m trying to remove is still there
when I use your code over what I stumbled across.

Something in the code below does remove the background image.

        self.navigationController!.navigationBar.isTranslucent = false
        self.navigationController!.navigationBar.titleTextAttributes =
[.foregroundColor: UIColor.white]

        let navBar = self.navigationController!.navigationBar
        let standardAppearance = UINavigationBarAppearance()
        standardAppearance.configureWithOpaqueBackground()
        standardAppearance.backgroundImage = UIImage()

        navBar.standardAppearance = standardAppearance
        navBar.scrollEdgeAppearance = standardAppearance

        self.navigationController?.navigationBar.backgroundImage(for: .default)
        navigationController?.navigationBar.setBackgroundImage(UIImage(), for:
.default)

Sadly, each build takes 2 minutes (thanks Swift!) even if I’m only changing 1
line, so it’s not time effective to figure out exactly what is.

Fun times.

Cheers,
Alex Zavatone


> On Jan 28, 2022, at 2:02 PM, David Duncan <email@hidden> wrote:
>
>
>
>> On Jan 28, 2022, at 11:50 AM, Alex Zavatone <email@hidden
>> <mailto:email@hidden>> wrote:
>>
>> Awesome.  Thank you, David.
>>
>>
>> I stumbled across this too while going through Apple documentation.  What’s
>> scary is that I have no idea why it works.
>>
>>         self.navigationController!.navigationBar.barStyle = .default
>>         self.navigationController!.navigationBar.isTranslucent = false
>>         self.navigationController!.navigationBar.titleTextAttributes =
>> [.foregroundColor: UIColor.white]
>>      self.navigationController?.navigationBar.backgroundImage(for: .default)
>>         navigationController?.navigationBar.setBackgroundImage(UIImage(),
>> for: .default)
>
> This stuff is pre-iOS 13 appearance customization. Using the new stuff will
> disable it.
>
>>
>>         let navBar = self.navigationController!.navigationBar
>>         let standardAppearance = UINavigationBarAppearance()
>>         standardAppearance.configureWithOpaqueBackground()
>>         standardAppearance.backgroundImage = UIImage()
>>
>>         navBar.standardAppearance = standardAppearance
>>         navBar.scrollEdgeAppearance = standardAppearance
>
> With iOS 13 the navigation bar now has multiple appearance states. The
> scrollEdgeAppearance is when your bar is at the edge of a scroll view (top
> for a navigation bar, bottom for tab & toolbar). This configures the bar to
> use the same appearance state (in this case, a solid color background, using
> UIColor.systemBackgroundColor). In context the setting of backgroundImage
> doesn’t do anything (it defaults to nil and empty images have identical
> behavior).
>
> By setting standardAppearance == scrollEdgeAppearance it in turn disables the
> “bar becomes transparent at the top” behavior introduced for large titles in
> iOS 13 and extended to all bar in iOS 15.
>
>>
>>
>> Thanks again David.  You’re on my Christmas list.
>>
>> Alex Zavatone
>>
>>> On Jan 28, 2022, at 1:30 PM, David Duncan <email@hidden
>>> <mailto:email@hidden>> wrote:
>>>
>>> UINavigationBarAppearance *appearance = [UINavigationBarAppearance new];
>>> [appearance configureWithTransparentBackground];
>>> navigationItem.standardAppearance = appearance;
>>>
>>> Thats the simplest per-item way to do it. This does imply you adopt the new
>>> appearance APIs introduced in iOS 13.
>>>
>>>> On Jan 28, 2022, at 11:03 AM, Alex Zavatone via Cocoa-dev
>>>> <email@hidden <mailto:email@hidden>> wrote:
>>>>
>>>> Hi there.  I’m in the middle of trying to find out how the hell to remove
>>>> a background from a UINavigationBar and it’s not easy.  You’d think that
>>>> you could get a UInavigationBar.navigationitem.background and remove it
>>>> from a superview or set its alpha to 0, but it’s not that easy.
>>>>
>>>> Does anyone have any clue how to get a reference to the background once it
>>>> has been set so that it can be set to 0 alpha or removed from the
>>>> superview?
>>>>
>>>> Thanks in advance and happy Friday.  Apple sure has ways to make things
>>>> that should be simple very obscure and extremely deifficult to handle.
>>>>
>>>> Cheers,
>>>> Alex Zavatone
>>>> _______________________________________________
>>>>
>>>> Cocoa-dev mailing list (email@hidden
>>>> <mailto:email@hidden>)
>>>>
>>>> Please do not post admin requests or moderator comments to the list.
>>>> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>>>> <http://lists.apple.com/>
>>>>
>>>> Help/Unsubscribe/Update your Subscription:
>>>>
>>>> This email sent to email@hidden <mailto:email@hidden>
>>>
>>
>

_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: iOS UINavigation background removal.
      • From: Mike Abdullah via Cocoa-dev <email@hidden>
References: 
 >iOS UINavigation background removal. (From: Alex Zavatone via Cocoa-dev <email@hidden>)
 >Re: iOS UINavigation background removal. (From: David Duncan via Cocoa-dev <email@hidden>)
 >Re: iOS UINavigation background removal. (From: Alex Zavatone via Cocoa-dev <email@hidden>)
 >Re: iOS UINavigation background removal. (From: David Duncan via Cocoa-dev <email@hidden>)

  • Prev by Date: Re: iOS UINavigation background removal.
  • Next by Date: Re: iOS UINavigation background removal.
  • Previous by thread: Re: iOS UINavigation background removal.
  • Next by thread: Re: iOS UINavigation background removal.
  • Index(es):
    • Date
    • Thread