1️⃣ Soptstagram 화면 만들기
- UI요소 둥글게 만들기
@IBOutlet weak var profileImage: UIImageView! profileImage.layer.cornerRadius = profileImage.frame.width * 0.5 profileImage.clipsToBounds = true // true로 설정하게 되면 안의 내용들이 잘리게 된다. 즉, View를 기준으로 내용들이 나타난다. profileImage.layer.masksToBounds = false // 위와 똑같은 내용
실행화면
1️⃣ Segue이용 데이터 전달
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // 다음화면의 identifier을 받아온다 guard let identifier = segue.destination else { return } // identifier에 해당하는 ViewContoller 레퍼런스를 생성한다. if identifier == "purple" { guard let purple = segue.destination as? PurpleViewController else { return } purple.data = "보라색" } else { guard let green = segue.destination as? GreenViewController else { return } green.data = "녹색" } }
실행화면
2️⃣ Segue이용 하지 않고 데이터 전달
guard let controller = self.storyboard?.instantiateViewController(identifier: "Recieve") as? RecieveViewController else { return } // instantiateViewController(identifier:) 메소드로 "Recieve"을 Identifier로 가진 Controller 생성 controller.modalPresentationStyle = .fullScreen controller.email = textField.text controller.onOff = renewSwitch.isOn controller.term = turmSwitch.value self.present(controller, animated: true, completion: nil) // controller 화면으로 전환
실행화면
3️⃣ AutoLayOut이용 화면 구성
// 옵저버 패턴 활용 TextField 가리는 문제 해결 private func addKeyboardObserver() { // UIResponder.keyboardWillShowNotification에 해당하는 이벤트 발생 시 작동 NotificationCenter.default.addObserver(self, selector: #selector(upKeyboard), name: UIResponder.keyboardWillShowNotification, object: nil) // UIResponder.keyboardDidHideNotification에 해당하는 이벤트 발생 시 작동 NotificationCenter.default.addObserver(self, selector: #selector(downKeyboard), name: UIResponder.keyboardWillHideNotification, object: nil) } @objc func upKeyboard() { self.view.frame.origin.y = UtilValue.keyboardHeight } @objc func downKeyboard() { self.view.frame.origin.y = 0 }
실행 화면
4️⃣ Calculator
- Custom View 만들어서 사용하기
class InputView: UIView { // Interface Builder를 이용하여 사용할 때, 호출되는 init override init(frame: CGRect) { super.init(frame: frame) initailView() } // 코드를 통해 View를 만들 때, 호출되는 init required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) initalView() } private func initailView() { // inputView 이름을 가진 class를 IB로 load해오는 코드 guard let view = Bundle.main.loadNibNamed(NibNames.inputView, owner: self, options: nil)?.first as? UIView else { return } view.frame = self.bounds self.addSubview(view) } }
실행화면
1️⃣ ScrollView, CollectionView 활용 Main View 만들기
class MainViewController: UIViewController { @IBOutlet weak var bannerCollectionView: UICollectionView! override func viewDidLoad() { bannerCollectionView.dataSource = self // Cell의 Data 관련 bannerCollectionView.delegate = self // Cell의 크기, 이벤트등 } } extension MainViewController: UICollectionViewDataSource {} //꼭 구현해야하는 기능 구현 extension MainViewController: UICollectionViewDelegate {}
실행화면
1️⃣ Alamorfire 이용 서버 통신
✅ Login Service
실행화면
✅ Signup Service ( 다음과 같이 Signup 실행 )
실행화면
1️⃣ 디자인 합동 세미나
✅ View 구현하기
실행화면
1️⃣ 서버 합동 세미나
✅
따릉이뷰에 맞는 서버 데이터 통신하기
구현 데이터
➡️ Login View 구현해 로그인 및 회원가입 구현
➡️ 회원정보 관리 메뉴 클릭 시, 간단한 개인 정보 받아오기
➡️ 홈 화면에서 각 따릉이 Index 별로 자전거 수 받아오기
1️⃣ SNS 연동 로그인 구현
✅ FaceBook 연동 로그인
- 구현
➡️ Facebook 개발자 문서 확인하여 차례대로 따라하기 (카카오톡, 네이버 등)
실행화면