iOS - UIKit
[iOS - UIKit] StackView를 알아보자
https://developer.apple.com/documentation/uikit/uistackview UIStackView | Apple Developer Documentation A streamlined interface for laying out a collection of views in either a column or a row. developer.apple.com UI StackView + 애플 개발자문서. 행 또는 열에 View들의 묶음을 배치할 수 있는 간소화된 인터페이스이다. 공식 문서의 설명 [개요] StackView는 AutoLayout의 힘을 활용하여 사용자 인터페이스를 작성할 수 있게 해주며, 기기의 방향, 화면의 크기, 사용가능한 공간의 변경에 동적으로 적을할 수 있는 인터..
[iOS] UIImagePicker
UIImagePicker // 버튼이 눌리면 이미지 피커가 떠오르도록 @objc func handleProfilePhotoSelect(){ //이미지 피커 설정 let picker = UIImagePickerController() picker.delegate = self picker.allowsEditing = true present(picker, animated: true, completion: nil) } ImagePickerDelegate extension RegistrationController: UIImagePickerControllerDelegate{ // 이미지피커 선택이 완료되면 전달되는 델리게이트 func imagePickerController(_ picker: UIImagePickerC..
[UIKit] UICollectionView
UICollectionView 데이터 항목의 정렬된 컬렉션을 관리하고 커스텀한 레이아웃을 사용해 표시하는 객체 UITableVIew처럼 ScrollView를 상속받고있으며 다양한 레이아웃을 보여줄 때 사용 리스트 형태와 슬라이더 형태 모두 표현 가능하다. UICollectionView에 표시되는 모든 View는 UICollectionViewReuseableView의 인스턴스여야한다. UICollectionViewReuseableView는 컬렉션 뷰에서 사용중인 재사용 메커니즘을 지원한다. 매번 새 View를 만드는 대신에 이 View를 재사용해서 성능을 향상시키고 스크롤하는 동안에 성능적인 요소들이 향상되게된다. 이 부분은 tableview와 마찬가지이다. UICollectionView의 구성요소 Sup..
UIKit - UITextfield
UITextField: - 텍스트를 편집하기 위한 객체, 사용자가 클릭하면 텍스트를 입력, 수정 할 수 있다. - 여러줄을 입력할 수 없고 '한'줄만 가능하다(여러줄을 하기위해선 UITextView) TextField.becomeFirstResponder() 화면이 넘어가면 자연스럽게 커서가 텍스트필드로 넘어오고 텍스트모드가 됨. textField.keyboardType = .emailAddress // 텍스트 필드의 키보드 스타일 textField.returnKeyType = .done // 엔터버튼? 의 모드 textField.placeholder = "이메일 입력" // placeholder textField.borderStyle = .roundedRect // 선 스타일 textField.isSe..
IOS - Navigation Controller
Navigation Controller: - 계층적 내용을 탐색하기 위한 스택 기반의 체계를 정의하는 컨테이너 뷰 컨트롤러. 스택: Stack ㅇ LIFO(Last in First Out) 자료구조로 가장 늦게 push된 item이 가장 먼저 pop된다 ㅇ push: item 넣기 ㅇ pop: item 빼기 ex) 아이폰의 설정창 Navigation Bar - UINavigaitonBar - 화면 상단에 항상 보여지는 bar - root view 이외의 모든 view에서 back버튼이 있어서, 유저가 계층구조에서 다시 뒤로갈 수 있게끔 해준다. - 현재의 stack level에 있는 view controller에 맞게 변한다. func setupNaviBar(){ title = "회원목록" //네비게이션..
UIkit - UITableView
UITableView: - 데이터를 목록형태로 보여줄 수 있는 UI컴포넌트 - 여러개의 셀을 가지고있고, 한개의 열과 여러줄의 행을 가지고 있으며, 수직으로만 스크롤이 가능하다. - DataSource는 Data를 받아 뷰를 그려주는 역할 - Delegate는 TableView의 동작과 외관을 담당한다. UITableViewDelegate를 통해 데이터를 전달받을 수 있다. tableView.reloadData() //테이블뷰의 데이터를 다시 읽어옴 tableView.rowHeight = 60 // 셀의 높이 설정 // 스토리보드서 identifire를 지정한게 코드로 작성할 경우 register에서 작성 // 코드로 작성한 경우 커스텀 셀 등록 / 메타타입⤵️ tableView.register(MyTa..
UIKIT. 화면간 데이터 전달.
화면간 데이터 전달을 하려 할 때엔 화면전환이 가능해진 이후. 화면전환에서 사용했던 옵셔널 바인딩을 약간 수정해야한다. guard let viewController = self.storyboard?.instantiateViewController(withIdentifier: "Storyboard ID") as else { return } 옵셔널 바인딩을 해준 이유는 뷰를 클래스의 인스턴스화 해야하기 때문이다. 데이터 전달을 할 때에도 인스턴스화가 필요하지만 다른 방식의 접근이 필요하다. 옵셔널 바인딩과 다운캐스팅을 사용한다. guard let viewController = self.storyboard?.instantiateViewController(withIdentifier: "CodePushViewCon..
UIKIT. UINavigationController
일단 네비게이션 컨트롤러를 스토리보드에 추가해준다. storyboard entry point를 네비게이션 컨트롤러로 지정해준 후 네비게이션 컨트롤러를 메인뷰와 이어준 뒤 root view controller로 지정해주면 메인 view가 rootview가 된다. 뷰는 스택 자료구조처럼 움직이게된다. First in Lsat out으로 먼저 들어간 계층이 마지막에 나오게 된다 이를 스택 자료구조에선 스택에 넣는다 -> Push, 나오게된다 -> POP Sugue방식 -> 스토리보드에서 버튼을 우클릭 드래그앤 드롭을 view로 하여 쉽게 구현 가능하며, 이동된 뷰는 스택에 PUSH된다. code방식 공통: @IBAction을 만들어 컴포넌트가 작동됐을 경우의 Action함수를 만들어 주어한다. Push(roo..
UIKIT. ViewController Life Cycle
appearing: 뷰가 나타나는중 (상태) appeared: 뷰가 나타남 (상태) disappearing: 뷰가 사라지는중 (상태) disappeared: 뷰가 사라짐(상태) viewDidLoad(): - 뷰가 메모리에 로드됐을 때 호출 - 메모리에 로드될 때 한 번만 호출하지만 root뷰가 아닌 모든 뷰는 사라질 때 메모리에서 내려가게됨. - 주로 초기화 작업을 이메소드에 정의함. viewWillAppear(): - 뷰가 계층에 추가될 때, 화면에 보이기 직전에 호출 - 다른뷰로 이동했다가 돌아오면 호출 viewDidAppear(): - 뷰가 계층에 추가된 후 호출. - 애니메이션을 시작 viewWillDisappear(): - 뷰가 계층에서 사라지기 전에 호출. - 뷰가 생성된 뒤 작업한 내용을 처..