전체 글 165

[Twitter Clone] Add a custom cell

구현 화면 구현 순서 TweetTableViewCell.swift 파일 생성 (timeLineTable에 들어가는 셀에 대한 설정 목적)HomeViewController 클래스 내 timeLineTable에 TweetTableViewCell 등록extension HomeViewController 에 cell 불러오기   TweetTableViewCell.swiftimport UIKitclass TweetTableViewCell: UITableViewCell { static let identifier = "TweetTableViewCell" private let avatarImageView: UIImageView = { let imageView = UIImageView..

Clone App/Twitter 2024.05.24

[Twitter Clone] Setup the basic layout

구현 화면  구현 순서 메인 스토리보드 삭제 (코드 구현 목적)MainTabBarViewController 생성 HomeViewController 내에 TableView 생성   SceneDelegate.swift 코드 구현코드 구현으로 앱 실행 시 나오는 초기화면 구현import UIKitclass SceneDelegate: UIResponder, UIWindowSceneDelegate { var window: UIWindow? func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let windowSc..

Clone App/Twitter 2024.05.23

카카오톡 로그인 API 구현

카카오톡 로그인 API 설정  https://developers.kakao.com/docs/latest/ko/kakaologin/common Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.developers.kakao.com  기본 설정은 위의 사이트에 들어가서 한다.  그 외의 파일은 아래 코드를 구현한다.  AppDelegate.swift 코드 구현 import UIKitimport CoreDataimport KakaoSDKCommonimport KakaoSDKAuth@mainclass AppDelegate: UIResponder, UIApplicationDelegate { ..

iOS/UIKIT 2024.05.23

네비게이션 바에 배경 색상 넣기....

아래 처럼 나와야 하는데.. 이거 하느라 엄청 뻘짓했다.. 아래 보면 스크롤하면 글자가 작아지고 커지고하면서 배경색이 그대로지만 func setupNavigationTitle() { self.navigationItem.title = "Home Controller" let appearance = UINavigationBarAppearance() appearance.backgroundColor = .systemIndigo navigationController?.navigationBar.standardAppearance = appearance navigationController?.navigationBar.scrollEdgeAppearance = appearance /* 그냥 navigationBar.barT..

iOS/UIKIT 2024.02.20

클로저 6편

@escaping 지금까지 써온 클로저는 다음과 같이 "non-escaping Closure" 임 func runFuntion(closure: (Int, Int) -> Int) { closure(1,2) } ※ non-escaping Closure 란? 함수 내부에서 직접 실행하기 위해서 사용 파라미터로 받은 클로저를 변수 또는 상수에 대입 불가 중첩 함수에서 클로저를 사용할 경우 중첩 함수 리턴 불가 함수의 실행 흐름에서 탈출 안되기 때문에 함수가 종료되기 전에 무조건 실행되어야 함 만약에 상수에 클로저를 대입하면? func runFuntion(closure: (Int, Int) -> Int) { let answer: (Int, Int) -> Int = closure } 아래와 같이 오류가 발생 함수의..

iOS/Swift 2024.02.17

클로저 5편

@autoclosure 파라미터로 전달된 일반 구문 & 함수를 클로저로 래핑(Wrapping)하는 것을 말함 "@autoclosure" 라는 키워드를 파라미터 함수 타입 앞에 사용 func runFunction(closure: @autoclosure ()->()) { // 내부코드 } 여기서 closure 라는 파라미터는 실제로 클로저를 받지 않았지만, 클로저처럼 사용 가능 ※ 단, 실제 클로저를 전달받지 않았기 때문에 파라미터로 값을 넘기는 것 처럼 ( ) 를 통해 구문을 넘기는게 가능 runFunction(closure: 22>=23) " 22>=23" 은 일반 구문이지만, 실제로는 @autoclosure로 설정했기 때문에 클로저처럼 사용 가능 @autoclosure는 클로저가 호출되기 전까지 클로저..

iOS/Swift 2024.02.13

클로저 4편

클로저의 경량 문법 클로저의 문법을 단순하게 쓸 수 있게 하는 문법 func runFuntion(closure: (Int, Int) -> Int) { closure(1,2) } 위의 함수는 파라미터로 받은 클로저를 실행 클로저의 파라미터로 Int 타입의 1, 2를 전달 위의 함수를 호출하려면? 아래와 같이 클로저를 완전체로 작성해야함 runFuntion(closure: { (value1: Int, value2: Int) -> Int in return value1 + value2 }) 파라미터 타입과 리턴 타입 생략 가능 위의 함수에서 파라미터 타입 (Int, Int) 와 리턴 타입 Int 생략 가능 runFuntion(closure: { (value1, value2) in return value1 + v..

iOS/Swift 2024.02.10

클로저 3편

트레일링 클로저 트레일링 클로저는 클로저의 경량문법 즉, 클로저를 좀 더 보기 편하게 도와주는 문법 함수의 마지막 파라미터가 클로저일 때 이를 파라미터 값 형식이 아닌 함수 뒤에 붙여 작성하는 문법으로 이 때, Argument Label은 생략 파라미터가 클로저 하나인 함수 func runSomething(closure: () -> ()) { closure() } 해당 함수를 호출하는 방법 runSomething(closure: { () -> () in print("Hello")}) 위의 방식을 Inline Closure 라고 함 클로저가 파라미터의 값으로 함수 ( ) 안에 작성되어 있는 것을 말함 이 때 함수 구문 뒷 부분에 ")})" 이런식으로 되어 있는게 코드를 작성할 때 실수할 수 도 있고, 보기..

iOS/Swift 2024.02.10