[SOLVED] SwiftUI scaleEffect Causes Unwanted Position Change


This Content is from Stack Overflow. Question asked by Tometoyou

I have a view that should scale in and out, starting immediately when the view is shown and repeating forever. However, I find that it’s actually animating up and down as well as scaling much like in this post when it’s pushed from a navigation view:

struct PlaceholderView: View {
  @State private var isAnimating = false

  var body: some View {
      .frame(width: 30, height: 30)
      .scaleEffect(self.isAnimating ? 0.8 : 1)
      .animation(Animation.easeInOut(duration: 1).repeatForever())
      .onAppear {
        self.isAnimating = true
      .frame(width: 50, height: 50)

struct SettingsView: View {
  @State private var showPlaceholder = false

  var body: some View {
    NavigationView {
      ZStack {
          action: {
            showPlaceholder = true
          }, label: {
            Text("Go to placeholder")

          destination: PlaceholderView(),
          isActive: $showPlaceholder
        ) {

Why is this and how can I stop this from happening?


The way that Animation works in general in iOS or macOS is: that it see and observe the deference in parameters and try to answer them, unless we say ignore some change! or just observe special change like I did in code!

enter image description here

import SwiftUI

struct ContentView: View {

    @State private var toggleAnimation: Bool = Bool()
    var body: some View {
                .scaleEffect(toggleAnimation ? 2.0 : 1.0)
                .animation(toggleAnimation ? Animation.easeInOut(duration: 1).repeatForever(autoreverses: true) : Animation.easeInOut, value: toggleAnimation)

            Button("Toggle Animation") { toggleAnimation.toggle() }
        .frame(width:200, height:200)

This Question was asked in StackOverflow by Clifton Labrum and Answered by ios coder It is licensed under the terms of CC BY-SA 2.5. - CC BY-SA 3.0. - CC BY-SA 4.0.

people found this article helpful. What about you?