Re: iOS UINavigation background removal.
Re: iOS UINavigation background removal.
- Subject: Re: iOS UINavigation background removal.
- From: David Duncan via Cocoa-dev <email@hidden>
- Date: Fri, 28 Jan 2022 12:02:05 -0800
> On Jan 28, 2022, at 11:50 AM, Alex Zavatone <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
>>
>
_______________________________________________
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