전체 글31 키보드에 가려지는 텍스트 필드 이동시키기 텍스트를 입력할 때, 키보드가 텍스트필드를 가리게 된다면, 좋지 않은 사용자 경험을 제공하게 된다. 이러한 문제를 해결하기 위해, 키보드가 올라온 만큼 텍스트 필드의 위치를 위로 이동시키려고 한다. 해야할 일은 다음과 같다. 1. 키보드 유무 감지 2. 키보드 높이 구하기 3. 키보드 애니메이션 정보 구하기 4. 텍스트 필드 이동 1. 키보드 유무 감지 먼저 키보드의 존재 여부를 파악하기 위해서 UIResponder.keyboardWillShowNotification를 감지하는 옵저버로 뷰컨트롤러를 설정한다. override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) // keyboardWillShowNotification,.. 2023. 7. 12. SnapKit Auto Layout을 더 쉽게 작성하도록 도와주는 라이브러리이다. 예시 import SnapKit override func viewDidLoad() { super.viewDidLoad() // 뷰 생성 let redView = UIView() redView.backgroundColor = .red self.view.addSubview(redView) // 제약 조건 설정 redView.snp.makeConstraints { make in make.width.height.equalTo(100) // 너비와 높이를 100으로 설정 make.center.equalToSuperview() // 뷰를 수퍼뷰의 가운데에 위치 } } 클로저 문법을 사용하지 않고 작성하면 아래와 같다. redView.snp.make.. 2023. 7. 12. NotificationCenter NotificationCenter NotificationCenter는 앱 내에서 발생하는 이벤트에 대한 알림을 관리하는 클래스이다. 알림을 관찰하고 해당 알림에 대한 처리를 수행하는 객체인 Observer를 등록해서 알림을 받을 수 있다. 애플리케이션 내의 모든 객체는 NotificationCenter 싱글톤 인스턴스를 사용하여 알림을 관찰하고 발송한다. default 정적 프로퍼티를 통해 싱글톤 인스턴스에 접근할 수 있다. let center = NotificationCenter.default Observer 아래의 메소드로 NotificationCenter에 옵저버를 등록할 수 있다. addObserver(_:selector:name:object:) func addObserver( _ observer.. 2023. 7. 7. UITableViewDataSource UITableViewDataSource는 테이블 뷰의 데이터 소스 역할을 담당하는 프로토콜로, 테이블 뷰에 필요한 데이터를 제공하고, 테이블 뷰의 모양과 동작을 설정한다. 주요 메소드는 다음과 같다. tableView(_:numberOfRowsInSection:) func tableView( _ tableView: UITableView, numberOfRowsInSection section: Int ) -> Int 섹션 내의 row 개수를 반환 tableView: 해당 데이터 소스를 가지고 있는 테이블 뷰 객체 section: 행 개수를 가져올 섹션의 인덱스 return: 해당 섹션에 표시할 행의 개수를 반환 tableView(_:cellForRowAt:) func tableView( _ tableVie.. 2023. 7. 6. 뷰 컨트롤러 간의 통신 새로운 뷰 컨트롤러에게 데이터 전송 새로운 뷰 컨트롤러에게 데이터를 전송하는 방법은 다음과 같다. // 전송버튼 @IBAction func onSubmit(_ sender: Any) { // rvc가 UIViewController이면 ResultViewController의 프로퍼티를 사용하지 못해서 형변환 필요 guard let rvc = self.storyboard?.instantiateViewController(identifier: "RVC") as? ResultViewController else { return } // 만든 인스턴스에 값 전송 rvc.paramEmail = emailInput.text! rvc.paramMode = mode.isOn rvc.paramInterval = interva.. 2023. 7. 6. 네비게이션 바가 스토리보드상에서 보이지 않을 때 네비게이션 아이템을 뷰 컨트롤러에 추가 한 뒤에도 스토리보드상에서 네비게이션 바가 보이지 않으면 아래와 같이 하면 된다. 뷰 컨트롤러 클릭 -> 어트리뷰트 인스펙터 -> topbar에서 투명 네비게이션 바 선택 2023. 7. 1. 이전 1 2 3 4 5 6 다음