This commit is contained in:
JinJiangHuang
2026-03-02 12:53:16 +08:00
parent e58322339f
commit dc1a010e05
+32 -34
View File
@@ -13,6 +13,8 @@ struct EpisodeListView: View {
@State private var currentGroup = 0 @State private var currentGroup = 0
/// ///
private let groupSize = 50 private let groupSize = 50
///
private let gridColumns = [GridItem(.adaptive(minimum: 78), spacing: 10)]
/// 1 0 /// 1 0
private var groupCount: Int { private var groupCount: Int {
@@ -63,44 +65,40 @@ struct EpisodeListView: View {
} }
} }
// //
ScrollView(.horizontal, showsIndicators: false) { LazyVGrid(columns: gridColumns, alignment: .leading, spacing: 10) {
LazyHGrid(rows: [ // 使 + 便
GridItem(.fixed(44)), ForEach(Array(currentEpisodes.enumerated()), id: \.offset) { index, episode in
GridItem(.fixed(44)) let actualIndex = currentGroup * groupSize + index
], spacing: 10) { Button {
// 使 + 便 onSelect(actualIndex)
ForEach(Array(currentEpisodes.enumerated()), id: \.offset) { index, episode in } label: {
let actualIndex = currentGroup * groupSize + index Text(episode.name)
Button { .font(.system(size: 13, weight: actualIndex == selectedIndex ? .bold : .medium))
onSelect(actualIndex) .foregroundColor(actualIndex == selectedIndex ? .white : .white.opacity(0.7))
} label: { .lineLimit(1)
Text(episode.name) .minimumScaleFactor(0.85)
.font(.system(size: 13, weight: actualIndex == selectedIndex ? .bold : .medium)) .frame(maxWidth: .infinity)
.foregroundColor(actualIndex == selectedIndex ? .white : .white.opacity(0.7)) .frame(height: 44)
.frame(minWidth: 70) .background(
.frame(height: 44) ZStack {
.background( if actualIndex == selectedIndex {
ZStack { AppTheme.accentGradient
if actualIndex == selectedIndex { } else {
AppTheme.accentGradient Color.white.opacity(0.05)
} else {
Color.white.opacity(0.05)
}
} }
) }
.clipShape(RoundedRectangle(cornerRadius: 10)) )
.overlay( .clipShape(RoundedRectangle(cornerRadius: 10))
RoundedRectangle(cornerRadius: 10) .overlay(
.stroke(actualIndex == selectedIndex ? Color.clear : Color.white.opacity(0.1), lineWidth: 0.5) RoundedRectangle(cornerRadius: 10)
) .stroke(actualIndex == selectedIndex ? Color.clear : Color.white.opacity(0.1), lineWidth: 0.5)
} )
.buttonStyle(.plain)
} }
.buttonStyle(.plain)
} }
.padding(.horizontal, 20)
} }
.frame(height: 100) .padding(.horizontal, 20)
} }
} }
} }