-
반응형
Remocle 개발 하면서 간단한 문제 이지만 매번 찾기 귀찮았던 코드 snippet을 정리했다.
UIKit 관련
1. textInput 이외의 영역을 클릭 했을 때 키보드가 내려가도록 하기
override func viewDidLoad() { let tapGesture = UITapGestureRecognizer( target: self, action: #selector(self.dismissKeyboard (_:))) self.view.addGestureRecognizer(tapGesture) } @objc func dismissKeyboard (_ sender: UITapGestureRecognizer) { aTextField.resignFirstResponder() }
다만 위처럼 처리할 경우 self.view 하위에 다른 클릭 이벤트를 받아야 하는 view가 있을때 event가 GestureRecognizer 에서 처리가 되어버리고 View에게 touch event가 넘어가지 않는다. touch event를 view로 넘겨야 할 필요가 있을 때 sender.cancelsTouchesInView = false 로 설정해 주면 된다.
override func viewDidLoad { let tapGesture = UITapGestureRecognizer( target: self, action: #selector(dismissKeyboard(_:))) view.addGestureRecognizer(tapGesture) } @objc func dismissKeyboard(_ sender: UITapGestureRecognizer) { if sender.state == .ended { editTitleView.resignFirstResponder() } // A Boolean value affecting // whether touches are delivered to a view when a gesture is recognized. sender.cancelsTouchesInView = false }
2. TableView 하단에 비어있는 cell이 노출되는 것 숨기기
FooterView에 빈 view를 하나 추가해 주면 된다.
tableView.tableFooterView = UIView()
3. TableView의 separator 를 숨기는 방법
tableView.separatorStyle = .none tableView.separatorColor = .clear
4. UIPageView 의 child view controller 사이즈를 조정하는 법
아래처럼 할 수 있지만 view.subview[0] 이 언제까지 동작할지 알수 없으므로 추천하지 않는다.
override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() let scrollView = view.subviews[0] as UIView scrollView.frame = CGRect(x: scrollView.frame.origin.x, y: scrollView.frame.origin.y, width: scrollView.frame.size.width, height: scrollView.frame.size.height - 64) }
5. UI버튼의 클릭 영역 넓혀주기
생각보다 되게 자주 쓰게되는 코드로, 버튼 클릭이 잘 안될 때 아래처럼 클래스 하나 새로 만들어 주면 편하다.
class CustomButton: UIButton { override func point(inside point: CGPoint, with event: UIEvent?) -> Bool { return bounds.insetBy(dx: -10, dy: -10).contains(point) } }
반응형'개발' 카테고리의 다른 글
[iOS] Combine-Realm 에서 item 삭제시 crash 이슈 해결 (0) 2020.11.19 Jekyll 설치하기 (0) 2020.11.11 SwiftUI Code snippet - 내가 보려고 정리하는 코드 (0) 2020.11.06 [iOS] Audio Recorder 개발하면서 참고사이트 (0) 2020.11.03 [CocoaPods] symbol(s) not found for architecture arm64 에러 해결하기 (0) 2020.10.23 댓글