위 화면에서 버튼을 누르면 버튼이 천천히 세로로 길어지고, 가로로 길어지는 이벤트가 발생된다.
아래 코드에서 애니메이션 처리 소스 안에 self.view.layoutIfNeeded() 을 빼보자.
애니메이션 처리가 되지 않을 것이다.
self.view.layoutIfNeeded() 함수를 호출해야지 업데이트된 제약 조건들이 반영이된다.
참고로 제약조건을 변수로 빼서 작업을 할 수 있다. 예) heightAnchor ..
import UIKit
class ViewController: UIViewController {
fileprivate var heightAnchor : NSLayoutConstraint!
fileprivate var widthAnchor: NSLayoutConstraint!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
// 버튼 생성
self.makeButton()
}
private func makeButton(){
let button = UIButton()
button.layer.cornerRadius = 12
button.backgroundColor = .cyan
button.setTitle("animate", for: .normal)
button.setTitleColor(.black, for: .normal)
button.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(button)
//button.heightAnchor.constraint(equalToConstant: 60).isActive = true
//button.widthAnchor.constraint(equalToConstant: 100).isActive = true
/// 제약조건을 변수로 뺄 수 있다.
heightAnchor = button.heightAnchor.constraint(equalToConstant: 60)
widthAnchor = button.widthAnchor.constraint(equalToConstant: 100)
heightAnchor.isActive = true
widthAnchor.isActive = true
button.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
button.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
button.addTarget(self, action: #selector(handleAnimation), for:.touchUpInside)
}
//MARK: 버튼 클릭
@objc fileprivate func handleAnimation(){
print("handleAnimation...")
//MARK: 높이 변경
heightAnchor.constant = 400
UIView.animate(withDuration: 1, delay: 0, usingSpringWithDamping: 0.5, initialSpringVelocity: 1, options: .curveEaseOut) {
self.view.layoutIfNeeded()
} completion: { success in
}
//MARK: 가로 변경
widthAnchor.constant = 200
UIView.animate(withDuration: 1, delay: 1.5, usingSpringWithDamping: 0.5, initialSpringVelocity: 1, options: .curveEaseOut) {
self.view.layoutIfNeeded()
} completion: { success in
}
}
}
'아이폰 개발 > Swift' 카테고리의 다른 글
swift stackView 튜토리얼 (0) | 2021.07.22 |
---|---|
swift layoutIfNeeded 예제 2 (0) | 2021.07.22 |
swift - Xcode 설정 (0) | 2021.06.26 |
swift - custom collectionview cell 주의 (0) | 2021.06.26 |
Swift 스크롤 뷰 튜토리얼 2021 - 06 -03 (0) | 2021.06.03 |