๐EmojiTextFieldStyle

import SwiftUI
// ๐ EmojiTextFieldStyle (internal)
struct EmojiTextFieldStyle<Background: View>: TextFieldStyle {
// โญ๏ธ style parameters
var background : Background
var borderColor: Color = .black
var borderWidth: CGFloat = 2
var emoji : String = "๐"
let opacity : Double = 0.85
// ๐
ฟ๏ธ TextFieldStyle requirement
public func _body(configuration: TextField<_Label>) -> some View {
let w = borderWidth
return configuration
.shadow(color: .black, radius: 2, x: 0, y: 1)
.padding(w+6, w+12, w+6, w+12) // ๐view.padding(_,_,_,_)
.background(background)
.overlay(
ZStack(alignment: .trailing) {
Rectangle()
.stroke(borderColor, lineWidth: borderWidth*2) // border
.shadow(radius: 3, x: w, y: w+1)
Text(emoji) // emoji
.opacity(opacity) // emoji opacity
.shadow(radius: 3, x: 2, y: 2)
.offset(x: -w-6)
}).clipped()
}
}
// ๐view.textFieldStyle()
extension View {
// ๐view.textFieldStyle(background:)
public func emojiTextFieldStyle<BG: View>(
_ background : BG,
borderColor: Color = .black,
borderWidth: CGFloat = 2
) -> some View {
textFieldStyle(
EmojiTextFieldStyle(
background : background,
borderColor: borderColor,
borderWidth: borderWidth
)
)
}//end
// ๐view.emojiTextFieldStyle()
public func emojiTextFieldStyle(
_ emoji: String = "๐",
_ bg: Color = .orange,
borderColor: Color = .black,
borderWidth: CGFloat = 2
) -> some View {
textFieldStyle(
EmojiTextFieldStyle(
background : bg,
borderColor: borderColor,
borderWidth: borderWidth,
emoji : emoji
)
)
}
}
Last updated
Was this helpful?