일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- transformation.map
- detect url
- notifychanged
- DataBinding
- oberve url
- 스크롤 탭
- 개발자 면접
- 상단 탭바
- List
- Tuist
- development language
- ios
- base64 변환
- scrolling tab
- UIViewControllerTransitioningDelegate
- pod install
- UIPresentationController
- swift
- 기존 앱
- SwiftUI
- convert base64
- swift #swift keychain #keychain 사용법
- Side Menu
- url 관찰
- url 추적
- Swift Package Manager
- DevelopmentRegion
- GeometryReader
- Android
- ViewBuilder
- Today
- Total
목록분류 전체보기 (170)
버그 잡이
RxSwift로 tableView를 보다 간단하게 구현할 수 있습니다. 구현 방식에도 여러 가지가 있는데 크게 tableView.rx.items 에 bind하는 방법 RxDataSource를 사용하는 방법 이렇게 두 가지 방법이 있습니다. tableView.rx.items 첫번째 방법은 가장 기본적인 방법으로 간단한 tableView 형태를 구현할 때 사용할 수 있습니다. data를 tableView에 bind하는 방식으로 기존에 Rx를 활용하여 data와 button을 바인딩 했던 것과 별반 다르지 않습니다. 차이점이 있다면 클로저 안에서 index, model, cell 변수가 주어져 이를 활용한 작업이 가능합니다. data의 특정 요소를 text로 넣는다거나 index에 따라 각기 다른 특정을 주는..
Swift에서 버튼 클릭시 동작을 설정하려면 addTarget을 통해서 함수를 연결하거나 오토레이아웃을 쓸 경우 @IBAction으로 연결할 수 있습니다. //addTarger을 활용한 방법 printLogBtn.addTarget(self, action: #seletor(printLog()), forControlEvents: .TouchUpInside) @objc func printLog() { print("clicked!") } //IBAction을 활용한 방법 @IBAction func printLog(btn: UIButton) { println("clicked!") } RxSwift를 통해서도 UIEvent를 받을 수 있습니다. let disposeBag = DisposeBag() button.rx..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b18Z80/btqIX3TBfbW/QcL5DLEiUqFlrjUW55Lxwk/img.png)
RxSwift 를 활용하면 버튼의 활성화 상태를 보다 쉽게 제어할 수 있습니다. 이를 위해서는 먼저 RxSwift의 두 가지 Operator에 대해서 이해할 필요가 있습니다. Combine Latest 2개 이상의 Observable을 합쳐서 발행해줍니다. 근데 그 패턴이 좀 독특해서 그림으로 이해할 필요가 있습니다. combineLatest는 다음과 같은 특징이 있습니다. 1. 합쳐지는 observable 들이 각각 최초 발행해야 result가 생성된다. 2. 둘 다 onCompleted 되어야 onComplete된다. 3. error는 하나만 발생해도 error를 전달한다. (코드로 살펴보겠습니다.) let bag = DisposeBag() enum MyError: Error { case error ..
지금 나는 인턴이지만 사수가 없다. 그래서 회사의 주요 이슈를 혼자서 어떻게든 처리해야 하는 상황이다. 다행히 주변 분들의 도움을 받으며 하나씩 해결을 해나가는 중이다. 그런데 오늘은 약속했던 마감이 하루 지난 날이다. 나는 약속했던 작업을 다 하지 못 했고, test 과정에서 내가 예상치 못 했던 이슈들이 발생했다. 치고 들어오는 이슈들을 하나씩 처리하고자 했지만 나의 뇌는 쏟아지는 이슈들에 굴복하고 말았다. 이때부터 나의 손은 나의 뇌보다 먼저 움직였다. 즉, 생각을 하지 않고 코딩을 하기 시작한 것이다. 이렇게 엉성한 하드코딩이 시작되었고, 내가 만들고 수정하는 코드의 이펙트를 감잡을 수 없었다. 나는 조급했고, 머리는 뜨거웠다. 그래도 머리를 쥐어 뜯으며 어떻게든 결과물을 만들어냈다. 그제야 이성..
animation의 변천사 (iOS 2) beginAnimations, commitAnimations (iOS 4) closure 형태인 animate 메서드 (iOS 10) UIViewPropertyAmimation 1번은 현재 deprecated 되었습니다. 2번이 많이 쓰이고 있는데, 애플에서는 3번 방법의 사용을 권장하고 있습니다. 그럼 2번, 3번 방법에 대해서 알아보겠습니다, Animate animate(withDuration: animations:) → duration(시간), animation(변화될 특성) 을 파라미터로 받습니다. animate(withDuration: animations: completion:) → 위 파라미터에 더해. 애니메이션 완료시 동작하는 completion을 추..
NumberFormatter란? 숫자값과 문자적 표현 사이를 변환해주는 formatter 입니다. NumberFormatter를 통해서 어떤 작업을 할 수 있을까요? 세자리수 마다 콤마 넣기 NumberFormatter객체의 numberStyle을 .decimal로 설정함으로써 콤마를 찍을 수 있습니다. let numberFormatter = NumberFormatter() numberFormatter.numberStyle = .decimal let price = 12345678 let result = numberFormatter.string(for: price)! print(result) //12,345,678 그런데 이 방법은 문제가 있습니다. 소수점을 가지고 있을 때, 소수점이 최대 3자리까지 밖에..
Xcode는 안드로이드 스튜디오에 비해 디버깅 메시지가 불친절합니다. 그래서 custom 로그를 찍을 수 있는 함수를 만들어서 쓰는 경우가 많은데요. 이는 swift의 디버깅 식별자 라는 것을 활용해 만들 수 있습니다. 디버깅 식별자 #file : 현재 코드가 실행 중인 파일 이름을 나타냅니다. #line : 현재 코드가 실행되고 있는 파일의 몇 번 줄에 위치하는지 나타냅니다. #column : 현재 코드가 실행되고 있는 줄의 몇 번 칸에 위치하는지 나타냅니다. #function : 현재 코드가 실행되고 있는 함수의 이름을 나타냅니다. myLogPrint 만들기 #file, #line #function을 사용하여 현재 찍은 로그가 어떤 파일, 몇번째 줄, 어떤 function인지 나타내주는 함수를 만들어..
custom Popup을 만들고 싶었습니다. 크게 UIView를 활용하는 방법과 UIViewController를 활용하는 방법으로 나뉩니다. 그중 UIViewController를 활용하는 방법에 대해서 알아보겠습니다. 1. Popup 만들기 https://m.blog.naver.com/PostView.nhn?blogId=tngh818&logNo=221539856664&proxyReferer=https:%2F%2Fwww.google.com%2F 위 블로그에 너무 잘 설명되어 있습니다.(감사합니다!) 위 블로그 내용에 첨언 하자면 backgroundColor를 black으로 하고 opacity를 50%로 주면 기존 다른 팝업들과 유사한 색상을 얻을 수 있습니다. 2. 애니메이션 효과 위 블로그 내용에는 아쉽..