(tvOS) Kategorien bzw. Auswahl-Menüs passen vom Design nicht, bitte um Hilfe

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • (tvOS) Kategorien bzw. Auswahl-Menüs passen vom Design nicht, bitte um Hilfe

    Hallo zusammen,

    ich versuche mich gerade an einer eigenen Apple TV App, soweit klappt es ganz gut, aber aktuell hänge ich am Aussehen der Kategorien bzw. der Auswahl-Menüs.

    Anbei ein Screenshot wie es jetzt aussieht:
    Bildschirmfoto 2025-01-22 um 21.10.18.png

    Das grün und den Rahmen habe ich derzeit mit Absicht eingefüllt damit ich sehe, was wo ist, denn ich möchte eigentlich, dass der graue Balken weg ist (oder ist dieser der "Hauptbalken"?) und der pinke Balken inkl. Rahmen ist nur ein Design-Element was wenn dann entfernt werden kann? Denn ich möchte, dass es so "Original" aussieht:

    Bildschirmfoto 2025-01-22 um 21.13.56.png

    Anbei der Code:

    Quellcode

    1. struct SettingsCategoryView: View {
    2. let title: String
    3. let isSelected: Bool
    4. var body: some View {
    5. HStack {
    6. Text(title)
    7. .foregroundColor(isSelected ? .black : .white)
    8. .font(.system(size: 22, weight: .regular))
    9. .padding(.leading, 20)
    10. Spacer()
    11. Image(systemName: "chevron.right")
    12. .foregroundColor(isSelected ? .black : .gray)
    13. .padding(.trailing, 20)
    14. }
    15. .frame(height: 50) // Einheitliche Höhe für die Kategorien
    16. .background(Color.pink) // Innerer Hintergrund auf pink gesetzt
    17. .cornerRadius(10) // Abrundung direkt auf den Hintergrund anwenden
    18. .overlay(
    19. RoundedRectangle(cornerRadius: 10)
    20. .stroke(Color.green, lineWidth: 3) // Äußerer Rahmen auf grün gesetzt
    21. )
    22. .padding(.horizontal, 0) // Entferne äußere Ränder
    23. .background(Color.clear) // Entferne alle anderen Hintergründe
    24. }
    25. }
    26. struct SettingsView_Previews: PreviewProvider {
    27. static var previews: some View {
    28. SettingsView()
    29. }
    30. }
    Alles anzeigen


    Danke schon mal!

    Edit:
    Ich habe den Code jetzt mal angepasst, aber es passt noch nicht so ganz, wenn eine Kategorie nicht ausgewählt ist, dann ist diese schwarz und nicht wie im Original grau.
    Simulator Screenshot - Apple TV 4K (3rd generation) - 2025-01-22 at 21.45.02.png


    Hier der Code:

    Quellcode

    1. import SwiftUI
    2. struct SettingsView: View {
    3. @State private var selectedCategory: String?
    4. var body: some View {
    5. NavigationStack {
    6. ZStack {
    7. Color.black
    8. .edgesIgnoringSafeArea(.all)
    9. VStack(spacing: 0) {
    10. // Überschrift oben in der Mitte
    11. Text("Einstellungen")
    12. .font(.system(size: 40, weight: .semibold))
    13. .foregroundColor(.white)
    14. .padding(.top, 30)
    15. HStack {
    16. // Linke Seite mit Logo
    17. VStack {
    18. Spacer()
    19. Image(systemName: "applelogo")
    20. .resizable()
    21. .scaledToFit()
    22. .frame(width: 120, height: 120)
    23. .foregroundColor(.white)
    24. Spacer()
    25. }
    26. .frame(width: UIScreen.main.bounds.width * 0.4)
    27. // Rechte Seite mit Kategorien
    28. VStack(spacing: 15) {
    29. ForEach(categories, id: \.self) { category in
    30. NavigationLink(
    31. value: category,
    32. label: {
    33. SettingsCategoryView(
    34. title: category,
    35. isSelected: selectedCategory == category
    36. )
    37. }
    38. )
    39. .buttonStyle(PlainButtonStyle())
    40. }
    41. }
    42. .frame(width: UIScreen.main.bounds.width * 0.5)
    43. }
    44. }
    45. }
    46. .navigationDestination(for: String.self) { value in
    47. Text("\(value)-Ansicht")
    48. .font(.title)
    49. .foregroundColor(.white)
    50. .navigationTitle(value)
    51. }
    52. }
    53. }
    54. private var categories: [String] {
    55. ["Allgemein", "Benutzer:innen und Accounts", "Video und Audio", "Bildschirmschoner", "AirPlay und HomeKit", "Fernbedienungen und Geräte", "Apps", "Netzwerk", "System", "Entwickler"]
    56. }
    57. }
    58. struct SettingsCategoryView: View {
    59. let title: String
    60. let isSelected: Bool
    61. var body: some View {
    62. HStack {
    63. Text(title)
    64. .foregroundColor(.white)
    65. .font(.system(size: 22, weight: .medium))
    66. .padding(.leading, 20)
    67. Spacer()
    68. Image(systemName: "chevron.right")
    69. .foregroundColor(.gray)
    70. .padding(.trailing, 20)
    71. }
    72. .frame(height: 50) // Einheitliche Höhe für die Kategorien
    73. .background(isSelected ? Color.gray.opacity(0.3) : Color.clear) // Hervorhebung des ausgewählten Elements
    74. .cornerRadius(8) // Abgerundete Ecken
    75. .scaleEffect(isSelected ? 1.05 : 1.0) // Fokus-Animation
    76. .animation(.easeInOut, value: isSelected)
    77. }
    78. }
    79. struct SettingsView_Previews: PreviewProvider {
    80. static var previews: some View {
    81. SettingsView()
    82. }
    83. }
    Alles anzeigen
    Edit:
    Ich bekomme es einfach nicht hin. Jetzt habe ich zwar den nicht ausgewählten Bereich sichtbar, aber der doofe große graue Balken ist wieder da :(
    Bildschirmfoto 2025-01-22 um 21.48.26.png

    Hier der Code:

    Quellcode

    1. import SwiftUI
    2. struct SettingsView: View {
    3. @State private var selectedCategory: String?
    4. var body: some View {
    5. NavigationStack {
    6. ZStack {
    7. Color.black
    8. .edgesIgnoringSafeArea(.all)
    9. VStack(spacing: 0) {
    10. // Überschrift oben in der Mitte
    11. Text("Einstellungen")
    12. .font(.system(size: 40, weight: .semibold))
    13. .foregroundColor(.white)
    14. .padding(.top, 30)
    15. HStack {
    16. // Linke Seite mit Logo
    17. VStack {
    18. Spacer()
    19. Image(systemName: "applelogo")
    20. .resizable()
    21. .scaledToFit()
    22. .frame(width: 120, height: 120)
    23. .foregroundColor(.white)
    24. Spacer()
    25. }
    26. .frame(width: UIScreen.main.bounds.width * 0.4)
    27. // Rechte Seite mit Kategorien
    28. VStack(spacing: 15) {
    29. ForEach(categories, id: \.self) { category in
    30. NavigationLink(
    31. value: category,
    32. label: {
    33. SettingsCategoryView(
    34. title: category,
    35. isSelected: selectedCategory == category
    36. )
    37. }
    38. )
    39. .buttonStyle(PlainButtonStyle())
    40. }
    41. }
    42. .frame(width: UIScreen.main.bounds.width * 0.5)
    43. }
    44. }
    45. }
    46. .navigationDestination(for: String.self) { value in
    47. Text("\(value)-Ansicht")
    48. .font(.title)
    49. .foregroundColor(.white)
    50. .navigationTitle(value)
    51. }
    52. }
    53. }
    54. private var categories: [String] {
    55. ["Allgemein", "Benutzer:innen und Accounts", "Video und Audio", "Bildschirmschoner", "AirPlay und HomeKit", "Fernbedienungen und Geräte", "Apps", "Netzwerk", "System", "Entwickler"]
    56. }
    57. }
    58. struct SettingsCategoryView: View {
    59. let title: String
    60. let isSelected: Bool
    61. var body: some View {
    62. HStack {
    63. Text(title)
    64. .foregroundColor(.white)
    65. .font(.system(size: 22, weight: .medium))
    66. .padding(.leading, 20)
    67. Spacer()
    68. Image(systemName: "chevron.right")
    69. .foregroundColor(.gray)
    70. .padding(.trailing, 20)
    71. }
    72. .frame(height: 50) // Einheitliche Höhe für die Kategorien
    73. .background(isSelected ? Color.gray.opacity(0.3) : Color.gray.opacity(0.15)) // Hintergrundfarbe für ausgewählte und nicht ausgewählte Kategorien
    74. .cornerRadius(8) // Abgerundete Ecken
    75. .scaleEffect(isSelected ? 1.05 : 1.0) // Fokus-Animation
    76. .animation(.easeInOut, value: isSelected)
    77. }
    78. }
    79. struct SettingsView_Previews: PreviewProvider {
    80. static var previews: some View {
    81. SettingsView()
    82. }
    83. }
    Alles anzeigen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von iBoard ()

  • iBoard schrieb:

    Über 400 Ansichten und keine Antwort? Schade!
    Naja, ich bezweifle einmal, dass die 400 Views alle von Menschen kamen - dann ziehe noch die ab, die (1.) bei tvOS abschalten, (2.) kein SwiftUI machen oder (3.) keine Lust haben, im Code nach Fehlen zu suchen - da wird die Luft schon dünn...

    Ich kenne mich leider in SwiftUI zu wenig aus, um bewerten zu können, ob die Textfarbe eines (selektierten) Eintrags manuell gesetzt werden muss - ich vermute aber nicht. Würde es nicht mehr Sinn machen, die Farben nicht explizit zu setzen, sondern eine deklarative wie labelColor oder secondaryLabelColor zu verwenden? Das kann aber auch der berühmte rote Hering sein...

    Mich würde einmal interessieren, für welche App-Idee Du die Oberfläche der Apple-TV nachbilden willst?
    Diese Seite bleibt aus technischen Gründen unbedruckt.