skip to Main Content

I’m trying to make an app and I want to have a background colour for the app so I put the colour in the assets folder but the colour only fills up 3 quarters of the screen, leaving the top half empty.

I had a ZStack so I put .background(Color("appBackground")) at the end of the ZStack which left me with this result.

Code for the entire HomeScreenView:

import AVKit
import SwiftUI

struct HomeView: View {
    
    @Binding var streak: Streaks
    @Binding var timer: TimerStruct
    @State var isSheetPresented = false
    @Binding var navigationPath: NavigationPath
    @Binding var exercisePlans: [ExercisePlan]
    
    func ridzero(result: Double) -> String {
        let value = String(format: "%g", result)
        return value
    }
    func round(result: Double) -> String {
        let value = String(format: "%.1f", result)
        return value
    }
    
    var body: some View {
        NavigationView {
            GeometryReader { geometry in
                ScrollView {
                    ZStack {
                        VStack {
                            
                            let percent = Double(timer.exerciseTime/1500)
                            Text("Welcome back to ElderlyFit")
                                .font(.system(size: 25,weight: .medium, design: .rounded))
                                .offset(x: 0, y: 20)

                            CircularProgressView(timer: $timer, progress: CGFloat(percent))
                                .frame(width: 150, height: 150)
                                .offset(x: -95, y: -240)
                                .padding(EdgeInsets(top: 280, leading: 0, bottom: 0, trailing: 0))
                            Text("(round(result:percent*100))%")
                                .font(.system(size: 30, weight: .bold, design: .rounded))
                                .offset(x:-92, y:-345)
                            
                            Text("(round(result: timer.exerciseTime/60)) mins of exercise completed today")
                                .frame(width: 200, height: 50)
                                .font(.system(size: 20, design: .rounded))
                                .offset(x:100, y:-410)
                            
                            
                            StreaksView(timer: $timer, streak: $streak)
                                .offset(x:0, y: -330)
                                .padding()
                            
                            Text("Choose your exercise plan:")
                                .bold()
                                .font(.system(size: 25))
                                .offset(x: -30, y: -420)
                                .zIndex(1.0)
                            
                            
                            ExercisePlanView( streaks: $streak, timer: $timer, navigationPath: $navigationPath, exercisePlans: $exercisePlans)
                                .offset(x: 15, y: -405)
                                .zIndex(-1.0)
                                .font(Font.system(size: UIFontMetrics.default.scaledValue(for: 15)))
                            
                            //.frame(maxWidth: .infinity, maxHeight: .infinity)
                            
                        }
                        .frame(width: geometry.size.width)
                        .edgesIgnoringSafeArea(.all)
                        
                    }
                    .background(Color("appBackground"))
                }
            }
        }
    }
}

enter image description here

2

Answers


  1. You need to use edgesIgnoringSafeArea(.all) after background too.

    It should be

    .background(Color("appBackground")).edgesIgnoringSafeArea(.all)
    

    Also since you are using NavigationPath which is available only for iOS 16+. Probably it will be better to use ignoresSafeArea() because edgesIgnoringSafeArea(.all) is deprecated since iOS 14.

    And it will be

    .background(Color("appBackground")).ignoresSafeArea()
    
    Login or Signup to reply.
  2. Remove your .background(Color("appBackground")) line and put this immediately under the ZStack:

    Color("appBackground").edgesIgnoringSafeArea(.all)
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search