2016-09-25 6 views
8

스위프트 3에서 간단한 완료 블록을 수행하려면 어떻게해야합니까?UIView.animate - 스위프트 3 - 완료

나는 애니메이션의 완성 self.isOpen = true을 설정하려면 : 통과에

  UIView.animate(withDuration: 0.25, delay: 0.0, options: [], animations: { 
       self.isOpen = true 
       self.drawerView?.frame = CGRect(x: 0, y: 0, width: (self.drawerView?.frame.size.width)!, height: (self.drawerView?.frame.size.height)!) 
       self.contentView?.frame = CGRect(x: 200, y: 0, width: (self.contentView?.frame.size.width)!, height: (self.contentView?.frame.size.height)!) 
      }, completion: nil) 

:

그것은 인해 인터넷 작업에 아무것도 스위프트 3 기압 내용은 꽤 불가능 :(


나는 또한이 문서 전체를 검색했습니다. 단어는 "애니메이션"아무것도 찾을 수 없습니다 :

https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/index.html#//apple_ref/doc/uid/TP40014097-CH3-ID0

+1

을 미래를 : 후 .animate (...) 함수를 자동으로 생성하고, bluely highlighted ((Bool) -> Void)를 두 번 클릭 하시겠습니까? 편집기 자리 표시 자 및 익명 블록의 구조는 다음과 같이 준비합니다. – Muli

답변

49

당신은 다음과 같은 추가 :

UIView.animate(withDuration: 0.25, delay: 0.0, options: [], animations: { 
    self.drawerView?.frame = CGRect(x: 0, y: 0, width: (self.drawerView?.frame.size.width)!, height: (self.drawerView?.frame.size.height)!) 
    self.contentView?.frame = CGRect(x: 200, y: 0, width: (self.contentView?.frame.size.width)!, height: (self.contentView?.frame.size.height)!) 
}, completion: { (finished: Bool) in 
    self.isOpen = true 
}) 
+0

감사합니다. 그들의 "제안"은 이해하기에는 너무 수수께끼 같았습니다. 실제로 무엇을 쓸 것인가 ... 그리고 문서가 부족하고, 작동하지 않는 swift2.2 코드의 압도적 인 양은 상당히 실망 스럽습니다. ( –

+0

애니메이션은 훌륭하지만 어떻게 할 수 있습니까? 레이아웃을 클릭하여 버튼을 누르십시오? – pmb

-2

쓰기 그것을 코드를 아래와 같이 :

UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseOut, animations: { 

// code 

}) 
+0

이 답변에는 질문에 대한 완성 블록이 포함되어 있지 않습니다. – frakman1