Skip to content

Improvement: Frosted glass navbar on iPhone#1479

Draft
wutschel wants to merge 5 commits into
xbmc:masterfrom
wutschel:frosted_glass_navbar
Draft

Improvement: Frosted glass navbar on iPhone#1479
wutschel wants to merge 5 commits into
xbmc:masterfrom
wutschel:frosted_glass_navbar

Conversation

@wutschel

Copy link
Copy Markdown
Collaborator

Description

Frosted Glass Effect

Use frosted glass effect ([UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]) for navbar. Let the table views extend underneath the frosted glass and adapt contentInset accordingly.

Special care is needed for the following areas:

  • To have SVPullToRefresh working as expected it is important to explicitly set contentInset instead of automatic adjustment.
  • For iPad it is important to hide the toolbar's effect view buttonsViewEffect while being in fullscreen library view.

Screenshots

Screenshots (left = current, right = dark blur): https://ibb.co/zW9r4NRv
Video: link to video

Summary for release notes

Improvement: Frosted glass navbar on iPhone

@wutschel

Copy link
Copy Markdown
Collaborator Author

Initial PR only covers the library views. More work is required to let other views like server list or custom button view handle this as desired (= scroll view extending underneath the navbar) as well.

Comment thread XBMC Remote/AppDelegate.m Outdated
Comment on lines +115 to +116
[appearance configureWithOpaqueBackground];
[appearance configureWithTransparentBackground];

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

severity: minor
category: correctness

Redundant configureWithOpaqueBackground call

[MINOR] The call to configureWithOpaqueBackground on line 115 is immediately overridden by configureWithTransparentBackground on line 116. The first call has no effect and should be removed. suggestion [appearance configureWithTransparentBackground];

Comment on lines +1062 to +1064
moreItemsViewController.tableView.contentInset = activeLayoutView.contentInset;
[self setViewInset:moreItemsViewController.tableView bottom:buttonsViewBgToolbar.frame.size.height];
[moreItemsViewController.tableView setContentOffset:CGPointMake(0, -moreItemsViewController.tableView.contentInset.top) animated:NO];

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

severity: medium
category: correctness

Redundant configureWithOpaqueBackground call

[MEDIUM] The refactored code sets contentInset but no longer sets scrollIndicatorInsets. When content extends under translucent bars, the scroll indicator needs matching insets to avoid being partially obscured by the navigation bar or toolbar. The removed code explicitly set both: objc moreItemsViewController.tableView.scrollIndicatorInsets = tableViewInsets; This should be added after line 1063: suggestion moreItemsViewController.tableView.contentInset = activeLayoutView.contentInset; [self setViewInset:moreItemsViewController.tableView bottom:buttonsViewBgToolbar.frame.size.height]; moreItemsViewController.tableView.scrollIndicatorInsets = moreItemsViewController.tableView.contentInset; [moreItemsViewController.tableView setContentOffset:CGPointMake(0, -moreItemsViewController.tableView.contentInset.top) animated:NO];

Comment on lines +5829 to +5831
UIEdgeInsets viewInsets = dataList.contentInset;
viewInsets.top = [self getTableInsetTop];
dataList.contentInset = viewInsets;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

severity: medium
category: correctness

Redundant configureWithOpaqueBackground call

[MEDIUM] When setting contentInset.top to extend content under the navigation bar, scrollIndicatorInsets should also be set to prevent the scroll indicator from being drawn underneath the navbar. The existing setViewInset:bottom: method at DetailViewController.m:860-865 demonstrates this pattern (sets both contentInset and scrollIndicatorInsets), but it's not used here. suggestion UIEdgeInsets viewInsets = dataList.contentInset; viewInsets.top = [self getTableInsetTop]; dataList.contentInset = viewInsets; dataList.scrollIndicatorInsets = viewInsets;

@wutschel wutschel force-pushed the frosted_glass_navbar branch from 65d5f3e to 23d3969 Compare June 16, 2026 05:02
wutschel added 5 commits June 16, 2026 19:53
Make navbar transparent and add the desired blur effect. Let the table view and the collection view extend underneath the navbar and set the inset accordingly.
@wutschel wutschel force-pushed the frosted_glass_navbar branch from 23d3969 to e45d11a Compare June 16, 2026 17:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant