Change the background color of a TextField in SwiftUI
In this tutorial, we will see how to change the background color of a TextField in SwiftUI.
We can change the background color of a TextField
in SwiftUI in several ways. Now, follow the steps below to achieve this task.
Using the background() modifier
We can apply the .background()
modifier on the TextField
to set the background color of a TextField
.
Example
import SwiftUI struct ContentView: View { @State private var text = "" var body: some View { TextField("Enter text", text: $text) .padding() // To change the background color .background(Color.mint) // To create rounded corners for the TextField .cornerRadius(8) .padding() } }
In the above program, I have applied the .background()
modifier on the TextField
specifying the color .mint
as an argument of the .background()
modifier.
So, it will display a TextField
with mint colored background.
Output:
Using background() modifier with RoundedRectangle
If we want to use the RoundedRectangle
shape as the background for the TextField
, we can do that by putting the shape it into the background()
modifier.
Example
import SwiftUI struct ContentView: View { @State private var text = "" var body: some View { TextField("Enter text", text: $text) .padding() .background( // Creates a RoundedRectangle with a corner radius of 10 RoundedRectangle(cornerRadius: 10) // Change the background color here .foregroundColor(Color.yellow) ) .padding() } }
In the above program, I have used the RoundedRectangle
with a corner radius of 10 as the background shape of the TextField.
The foregroundColor
modifier is used to set the color of the rounded rectangle ( background) to yellow.
Output:
Conditional Background Change
Now, we can also change the background color conditionally after tapping the TextField
based on a state variable.
import SwiftUI struct ContentView: View { @State private var text = "" // State variable to toggle between colors @State private var isActive = false var body: some View { TextField("Enter text", text: $text) .padding() .background(isActive ? Color.yellow : Color.gray) // Toggle between colors .cornerRadius(8) .padding() // Add a tap gesture to the TextField .onTapGesture { self.isActive.toggle() // Toggles between colors on tap } } }
In the above program, I have declared a boolean state variable isActive to control the toggle between background colors (yellow
and gray
).
The .onTapGesture()
modifier is used to add a tap gesture to the TextField
. When we press the TextField it will toggle the isActive
state variable and switch between yellow and gray.
Output:
You can also check out the link to Change the TextField style after tapping on it in SwiftUI
Applying gradient background to a TextField
In SwiftUI, we can apply a gradient background to a TextField
using the background()
modifier. Here’s an example of how we can achieve this with a gradient background.
import SwiftUI struct ContentView: View { @State private var text = "" var body: some View { TextField("Enter text", text: $text) .padding() .background( LinearGradient( // Defines a linear gradient from orange to yellow gradient: Gradient(colors: [Color.orange, Color.yellow]), startPoint: .top, // Starts the gradient from the top of the TextField endPoint: .bottom // Ends the gradient at the bottom of the TextField ) ) .cornerRadius(8) .padding() } }
The above SwiftUI code will create a TextField
with a gradient background that transitions from orange to yellow.
Output:
Leave a Reply