import SwiftUI struct EpisodeListView: View { let episodes: [Episode] let selectedIndex: Int let onSelect: (Int) -> Void #if os(tvOS) private let columns = [ GridItem(.adaptive(minimum: 120, maximum: 160), spacing: 12) ] #else private let columns = [ GridItem(.adaptive(minimum: 70, maximum: 100), spacing: 8) ] #endif var body: some View { VStack(alignment: .leading, spacing: 8) { Text("选集 (\(episodes.count)集)") .font(.headline) LazyVGrid(columns: columns, spacing: 8) { ForEach(Array(episodes.enumerated()), id: \.element.id) { index, episode in Button { onSelect(index) } label: { Text(episode.name) .font(.caption) .lineLimit(1) .frame(maxWidth: .infinity) .padding(.vertical, 8) .background( selectedIndex == index ? Color.accentColor : Color.secondary.opacity(0.12), in: RoundedRectangle(cornerRadius: 6) ) .foregroundStyle(selectedIndex == index ? .white : .primary) } .buttonStyle(.plain) } } } } }