Skip to content

Instantly share code, notes, and snippets.

GeometryReader { geometry in
ScrollView {
ForEach(self.messages) { message in
MessageView(message: message)
.padding(.horizontal, 8)
.padding(EdgeInsets(
top: 0,
leading: message.sender == .me ? geometry.size.width * 0.5 : 0 ,
bottom: 0,
trailing: message.sender == .me ? 0 : geometry.size.width * 0.5))
GeometryReader { geometry in
ForEach(self.messages) { message in
MessageView(message: message)
.padding(.horizontal, 8)
.padding(EdgeInsets(
top: 0,
leading: message.sender == .me ? geometry.size.width * 0.5 : 0 ,
bottom: 0,
trailing: message.sender == .me ? 0 : geometry.size.width * 0.5))
}
.padding(EdgeInsets(
top: 0,
leading: message.sender == .me ? 64 : 0 ,
bottom: 0,
trailing: message.sender == .me ? 0 : 64))
struct MessageListView: View {
let messages: [Message]
var body: some View {
ForEach(self.messages) { message in
MessageView(message: message)
.padding(.horizontal, 8)
}
}
}
struct MessageView: View {
let message: Message
var body: some View {
HStack {
if message.sender == .me {
Spacer()
}
Text(message.content)
.multilineTextAlignment(.leading)
.fixedSize(horizontal: false, vertical: true)
struct MessageView: View {
let message: Message
var body: some View {
Text(message.content)
.multilineTextAlignment(.leading)
.fixedSize(horizontal: false, vertical: true)
.padding(.horizontal, 12)
.padding(.vertical, 4)
.background(message.sender == .me ? Color.blue : Color.gray)
.foregroundColor(message.sender == .me ? Color.white : Color.black)
struct Message: Hashable, Identifiable {
enum Sender: Hashable {
case me
case other(named: String)
}
let id: Int
let sender: Sender
let content: String
}
struct HighScoreView: View {
@EnvironmentObject var highScore: HighScore
var body: some View {
Text(highScore.value)
}
}
struct UserInputView: View {
@ObservedObject var user: User
var body: some View {
VStack {
Text(user.name)
Text(user.surname)
}
}
}
struct UsernameInputView: View {
@Binding var username: String
var body: some View {
TextField(username, text: $username)
}
}