берешь geometryReader, пихаешь в него VStack, ну или любой другой стек, задаёшь ему ширину и высоту, задаешь offset к нему же, значение offset должно высчитываться из измеренной geometryReader величины, потом к нему же цепляешь DragGesture и меняешь offset. А и не забудь ignoreSafeArea(.bottom), если кратко