skip to Main Content

I have been searching but could not find a way.

I would like to fill VStack view from bottom to top.
When a Text view added as a child to VStack for example it is places at the top.
I wanted to add it to the bottom of screen and second one on top of the first one.

@State var items: [Int] = [0]

var body: some View {
    HStack {
        
        Button(action: {
            
            items.append( items.count + 1)
            
        }){
            Text("Add")
        }
        
        
        
        ScrollView() {
            ForEach(0..<items.count, id: .self) { index in
                VStack(spacing:5) {
                    Text(String(items[index]))
                }
            }
        }
    }
}

What you get on top of screen;

1

2

What I want at the bottom of screen;

2

1

2

Answers


  1. How’s this?

    ScrollView {
      VStack(spacing: 5) {
        Spacer()
        ForEach(items.map(String.init).reversed(), id: .self) { item in
          Text(item)
        }
      }
    }
    
    Login or Signup to reply.
  2. You can achieve it by applying rotationEffect to your ScrollView and its inner content.

    @State var items: [Int] = [0]
    
    var body: some View {
        
        HStack {
            
            Button(action: {
                //Insert Items at 0 position to add content from bottom to top side
                items.insert(items.count, at: 0)
            }){
                Text("Add")
            }
            
            
            ScrollView(showsIndicators: false) {
    
                    ForEach(0..<items.count, id: .self) { index in
    
                        Text(String(items[index])).padding(.vertical,5)
    
                    }.rotationEffect(Angle(degrees: 180)) //After rotating scrollview, now rotate your inner content to upright position.
    
            }.rotationEffect(Angle(degrees: -180)) //Rotate scrollview to bottom side
        }
    }
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search