mirror of
https://github.com/yattee/yattee.git
synced 2026-07-19 05:42:04 +00:00
Force soft top scroll edge effect for banner and video info views
iOS 27 changes the default scroll edge effect style to hard, which draws a sharp cutoff line over the channel banner and video info gradient extending under the toolbar.
This commit is contained in:
24
Yattee/Extensions/View+SoftScrollEdgeEffect.swift
Normal file
24
Yattee/Extensions/View+SoftScrollEdgeEffect.swift
Normal file
@@ -0,0 +1,24 @@
|
||||
//
|
||||
// View+SoftScrollEdgeEffect.swift
|
||||
// Yattee
|
||||
//
|
||||
// iOS 27 changed the default scroll edge effect style from soft to hard,
|
||||
// which draws a sharp dividing line under the toolbar. Views that extend
|
||||
// a banner or gradient beneath the toolbar (channel header, video info)
|
||||
// need the soft style so the artwork stays cleanly visible.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
extension View {
|
||||
/// Forces the soft (blur/fade) scroll edge effect on the top edge
|
||||
/// for scroll views in this hierarchy. No-op before iOS 26/macOS 26.
|
||||
@ViewBuilder
|
||||
func softTopScrollEdgeEffect() -> some View {
|
||||
if #available(iOS 26, macOS 26, tvOS 26, *) {
|
||||
scrollEdgeEffectStyle(.soft, for: .top)
|
||||
} else {
|
||||
self
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -368,6 +368,7 @@ struct ChannelView: View {
|
||||
}
|
||||
.background(viewBackgroundColor)
|
||||
.ignoresSafeArea(edges: .top)
|
||||
.softTopScrollEdgeEffect()
|
||||
#if os(macOS)
|
||||
.overlay(alignment: .top) {
|
||||
legacyToolbarScrim
|
||||
@@ -533,6 +534,7 @@ struct ChannelView: View {
|
||||
}
|
||||
.background(viewBackgroundColor)
|
||||
.ignoresSafeArea(edges: .top)
|
||||
.softTopScrollEdgeEffect()
|
||||
#if os(macOS)
|
||||
.overlay(alignment: .top) {
|
||||
legacyToolbarScrim
|
||||
|
||||
@@ -545,6 +545,7 @@ struct VideoInfoView: View {
|
||||
#if !os(tvOS)
|
||||
.scrollDismissesKeyboard(.interactively)
|
||||
#endif
|
||||
.softTopScrollEdgeEffect()
|
||||
.modifier(VideoInfoScrollOffsetModifier(scrollOffset: $scrollOffset))
|
||||
|
||||
#if os(macOS)
|
||||
|
||||
Reference in New Issue
Block a user