2016-11-17 2 views
-1

내가 그것을 확인 작업 보인다,하지만 난 실수로 사실 5 번 yes을 설정하여 isHidden = 거짓 5 회 애니메이션 있다면, 가끔 애니메이션한다 isHidden 애니메이션을 시도 isHidden = true 2 번 이상 내 UIView를 볼 수있게하십시오!UIView.animate하지 애니메이션 부울 값이 완벽하게

내가 누락 된 항목이 있습니까?

if (yes) 
{ 
    UIView.animate(withDuration: 0.3, delay:0, animations: { 
       myLabel.isHidden=false 
      } 
} 
else 
{ 
    UIView.animate(withDuration: 0.3, delay:0, animations: { 
       myLabel.isHidden=true 
      } 
} 

답변

1

보기의 "isHidden"매개 변수에 애니메이션을 적용하면 안됩니다. 알파를 애니메이트해야합니다.

if (yes) 
{ 
    UIView.animate(withDuration: 0.3, delay:0, animations: { 
       myLabel.alpha=1.0 
      } 
} 
else 
{ 
    UIView.animate(withDuration: 0.3, delay:0, animations: { 
       myLabel.alpha=0.0 
      } 
} 

- - UPDATE 당신은 당신이 사용할 수있는 애니메이션 후 숨겨진보기를 확인하려면

는 :

myLabel.isHidden=false 
UIView.animateWithDuration(0.3, delay: 0.0, options: .CurveEaseOut, animations: { 
    myLabel.alpha=1.0 
    }, completion: { finished in 

    }) 

UIView.animateWithDuration(0.3, delay: 0.0, options: .CurveEaseOut, animations: { 
    myLabel.alpha=0.0 
    }, completion: { finished in 
    myLabel.isHidden=true 
    }) 
+0

그러나 나는 그것이보기에서 제거 된 후 자동 레이아웃이 레이아웃을 축소 있도록 isHidden 애니메이션을해야합니다. – AVEbrahimi

+0

@AVEbrahimi 내 업데이트 된 답변을 확인하십시오. –

0

나는 문제는 당신이 선형 애니메이션을 사용하고 있는지 생각 Bool 타입에는 2 개의 값 (false = 0, true = 1)과 그 사이의 다른 값 (펄스) 만 있습니다.

이 시도 :

if (yes) 
{ 
    myLabel.alpha = 0 
    myLabel.isHidden = false 
    UIView.animate(withDuration: 0.3, animations: { 
       myLabel.alpha = 1 
      }) 
} 
else 
{ 
    UIView.animate(withDuration: 0.3, animations: { 
       myLabel.alpha = 0 
      }, completion: { (status) in 
       myLabel.isHidden = true 
      }) 
} 
+0

하지만 isHidden을 애니메이트해야하므로 뷰에서 제거 된 후에 자동 레이아웃은 레이아웃을 줄입니다. – AVEbrahimi

+0

알파 속성을 사용하여 'UILabel'프레임의 높이에도 애니메이션을 적용 해보세요. – maho125

관련 문제