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 개발자 문서 확인하여 차례대로 따라하기 (카카오톡, 네이버 등)
실행화면
























