TextField UI를 구현하다 보면 아래처럼 글을 입력하기 전에 반투명 상태로 보이는 글씨가 있죠 ? 이걸 placeholder라고 불립니다. 근데 너무 붙어있죠.. 조금 띄우고 싶은데 오늘은 placeholder의 위치를 조정하는걸 공부해 보려고합니다 !! 먼저 아쉽게도 placeholder 위치를 잡아주는 TextField의 속성이 없어서 따로 만들어줘야해요. extension으로 UITextField에 leftPadding() 메소드를 하나 만들어 줍니다. (메소드 이름은 어떤걸로 해도 상관없어요) extension UITextField { func leftPadding() { // 1 let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: 20,..
정의 열거형은 관련된 값들의 그룹에 대한 공통 타입을 정의하고 안전한 타입(type-safe)이 된 해당 값들로 코드 내에서 사용할 수 있게 해줍니다. 각 열거 case 별로 값이 제공 된경우, 값의 타입은 String, Character, Int, Float가 될 수 있습니다. 열거형은 자체로 1급 클래스 유형 이어서 초기화를 정의 할 수도 있고, 초기기능을 확장할 수도 있고, 표준 기능을 제공하기 위해 프로토콜을 준수 할 수도 있습니다. 어렵다... 열거형 문법 열거형은 enum 키워드를 사용하여 정의 합니다. enum Enumeration { // enumeration 정의는 여기에 ! } 다음은 (동, 서, 남, 북) 네 가지 방향을 갖는 CompassPoint 열거형 선언의 예시 입니다. enu..
Alamofire Snapkit Starscream RxSwift 등등 많이 보셨죠? 어떤 기능들을 구현하는데 코드를 좀더 간결하고 시간을 단축시켜주게 하는 Library들 입니다. 이 모든 Library들을 관리하게 해주는 툴중 대표적으로 CocoaPods 이 있는데요. 오늘은 CocoaPods 설치 방법에 대해 알아볼게요. CocoaPods Swift 및 Objective-C 에서 개발을 할 때, 외부 라이브러리들을 관리하기 쉽도록 도와주는 의존성 관리 도구중 하나 입니다. CocoaPods 설치 터미널에 아래와 같이 입력해 줍니다. sudo gem install cocoapods 설치 끝. 아주 간단하죠? ⚠️ 참고 자물쇠 모양이 뜨면 맥북에 지정해놓은 비밀번호를 입력해주시고 비밀번호가 없다면 그냥..
지난 클로저에는 값 캡처, 클로저 표현식 에 대해 알아봤는데요! 오늘은 클로저의 심화 과정인 Escaping 클로저 Auto 클로저 에 대해 정리해 보려고합니다! 탈출 클로저 (Escaping Closures) 간단하게 표현하면, 함수가 끝나고 실행되는 클로저 이며, 비동기 작업을 하기 위해 사용합니다. 클로저를 함수의 파라미터로 넣을 수 있는데, 이때 파라미터 타입 앞에 @escaping 을 적어줌으로써 클로저가 escaping 할 수 있게 해줍니다. var completionHandlers: [() -> Void] = [] func withEscaping(completionHandler: @escaping () -> Void) { completionHandlers.append(completionHan..
대망의 클로져 입니다. 제일 많이 쓰이지만 아직도 어렵고 헷갈리는 그것. 공부해 봅시다. 클로저 (Closure) 클로저는 코드블럭으로 C와 Objective-C의 블럭(blocks), 다른 언어의 람다(lambdas)와 비슷 합니다. 어떤 상수나 변수의 참조를 캡쳐(capture)해 저장할 수 있습니다. Swift는 캡쳐와 관련된 모든 메모리를 다룹니다. 전역 함수(Global Functions)와 중첩 함수(Nested Functions)는 클로저의 특별한 경우 입니다. 클로저는 세 가지 형태중 하나를 가집니다. 이름을 갖고 있고, 어떤 값들도 캡처하지 않는 클로저 (전역 함수) 이름을 갖고 있고 관련한 함수의 값 들을 캡처 할 수 있는 클로저 (중첩 함수) 경량화된 문법으로 쓰여지고 관련된 문맥으로..
가끔 실기기에 테스트 해보려고 하면 이런 팝업이 뜨는데요. 네 .. 아이폰 이 친구가 바쁘답니다. 비싼자식 그렇다고 언제까지 기다려 줄수는 없으니 아래 해결방법 3가지를 가져왔습니다. StackOverFlow 에 있던 내용을 참고했습니다. 해결 방법 solution 1: 침착하게 10 ~ 15 분 기다린다. 차를 마시거나 주변을 돌아보세요 ;- ) 못기다려 이자식아 solution 2: 기기와 재연결을 해보고, iPhone과 Xcode를 재실행 해보거나, clean build ( cmd + shift + k ) 를 해보세요 저는 clean build 하니깐 됐어요 solution 3: 아래 가이드를 참고해주세요. Devices and Simulators 로 이동 (단축키: Shift + cmd + 2 )..
지난 튜토리얼 2-1에 이어서 가봅시다 LoggedIn 이 로드 될 때 OffGame attach 시키기 LoggedIn 은 viewless라고 했습니다. 하위 RIB 들을 조정만 할 수 있는데요. LoggedIn의 하위 RIB인 OffGame 을 생성해 볼게요. OffGame 은 "Start Game" 버튼을 보여주며, 버튼을 탭하면 작동하기 위한 역할을 할겁니다. OffGame은 RIB 생성시 view를 추가 해주세요! UI를 구현하기 위해 OffGameViewController 에 아래와 같이 작성 해주세요. (친절하게 uber에서 UI 코드를 공유해줬습니다. 여러분의 시간은 소중하니까 아래꺼 복붙!) // OffGameViewController import ModernRIBs import UIKi..
ModernRIBs_tutorial2 들어가기전에 RIBs, ModernRIBs 에서는 protocol을 굉장히 많이 사용합니다. protocol이 뭔지 모르겠다면 .. 진실의 방으로 튜토리얼 2 부터 블로깅을 시작합니다. RIBs 개념, 튜토리얼 1 은 천천히 정리해서 올릴게요! 아래부터 RIB은 RIB (굵게 + 회색바탕), 메소드는 method (굵게 +기울기), 파일은 file (굵게 + 밑줄)로 표기하겠습니다. 목표 하위 RIB과 상위 RIB의 소통 방식에 대한 이해 상위 interactor가 실행 될때 하위 RIB 연결/ 분리 Viewless RIB을 만들어보기 뷰가 필요없는 RIB이 분리될때 view 수정사항을 정리 상위 RIB이 로드 될때 하위 RIB을 연결 RIB의 lifecycle을 이..
함수 형 (Function Types) 모든 함수는 매개변수(parameter)타입과 반환(return)타입으로 구성된 특정 타입을 갖고 있습니다. 아래 함수는 Int 타입을 받아 Int 타입을 반환하는 함수 입니다. func addTwoInts(_ a: Int, _ b: Int) -> Int { return a + b } func multiplyTwoInts(_ a: Int, _ b: Int) -> Int { return a * b } 아래함수는 파라미터와 반환 값이 없는 함수입니다. func printHelloWorld() { print("hello, world") } 함수 형의 사용 (Using Function Types) 함수를 상수, 변수처럼 정의해서 사용할 수 있습니다. func addTwoI..
함수 (Functions) 함수란 특정 작업을 수행하는데 포함된 코드 덩어리 입니다. Swift의 모든 함수는 parameter(매개변수)와 return(반환)으로 구성되어 있습니다. 파라미터로 함수를 가질수도, 반환값에 함수가 있을수도, 함수안에 함수가 있게도 할 수 있습니다. 들어가기전에 명칭을 눈에 익혀두고 가시죠!! 정의와 호출 (Defining nad Calling Functions) 먼저 함수의 형태를 예제로 보겠습니다. 함수를 선언할 때는 func greet(person: String) -> String { let greeting = "Hello, " + person + "!" return greeting } 'func' 키워드로 함수라는걸 알리고 - func 뒤에는 함수명 - 함수명 뒤에는..
- Total
- Today
- Yesterday
- iOS error
- 원티드 프리온보딩
- Swift final
- Swift inout
- Swift joined
- swift property
- Combine: Asynchronous Programming with Swift
- swift protocol
- Swift RIBs
- Class
- swift programmers
- Swift 알고리즘
- ios
- Swift 내림차순
- swift reduce
- RIBs tutorial
- Swift 프로퍼티
- Swift Error Handling
- Swift
- swift (programmers)
- Swift joined()
- Swift init
- removeLast()
- 2023년 회고
- RTCCameraVideoCapturer
- Swift Leetcode
- Swift ModernRIBs
- CS 네트워크
- swift 고차함수
- Swift 프로그래머스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |