
오늘은 iOS 앱에 Lottie 애니메이션을 추가하는 법에 대해 학습하겠습니다! Lottie란 ? Airbnb에서 개발한 JSON형태로 애니메이션을 사용할 수 있는 라이브러리입니다. 주로, 모바일 앱을 실행할 때 splash screen 등을 구현하기 위해 사용됩니다. Lottie Behind the scenes of our new open-source animation tool airbnb.design 먼저, XCODE project를 생성한 후 CocoaPods을 통해 'lottie-ios'를 설치해줍니다. CocoaPods은 홈페이지에서 install, get started 또는 링크한 글을 따라서 설치해주시면 됩니다. CocoaPods.org CocoaPods is built with Ruby a..
Swift에는 Any, AnyObject, nil 키워드가 있습니다 ! 1. Any Swift의 모든 타입을 지칭할 수 있는 키워드입니다. 변수로 선언한다면, 초기 할당 타입과 다른 타입의 값으로 변경이 가능합니다. 하지만, (Any타입이 아닌) 다른 타입의 변수에 Any타입을 할당할 때는 컴파일 오류가 발생합니다. var anyVal: Any = 100 print(anyVal) // 100 출력 anyVal = "Hi" // Hi 출력 var intVal: Int = anyVal // 컴파일 오류 발생 2. AnyObject 모든 클래스 타입을 지칭할 수 있는 키워드입니다. AnyObject는 클래스 인스턴스만 할당할 수 있기에 클래스가 아닌 인스턴스는 할당할 수 없습니다. class tmpClass ..
1. 상수와 변수 Swift에는 상수와, 변수 개념이 있습니다 ! 상수는 초기 할당 후 변하지 않는 값, 변수는 초기 할당 후 변할 수 있는 값에 사용합니다. //선언 (타입은 생략가능) let 상수이름: 타입 = 값 var 변수이름: 타입 = 값 //예시 let letInt: Int = 100 var varInt: Int = 200 print(letInt) // 100 출력 print(varInt) // 200 출력 letInt = 200 print(letInt) // error 발생 varInt = 300 print(varInt) // 300 출력 변수, 상수는 선언 후에 나중에 값을 할당할 수 있습니다. 하지만 상수는 최초 값 할당 후, 값을 변경할 때 에러가 발생합니다. let letInt: In..

안녕하세요! 모바일 앱을 이용하다보면 위와 같은 선택 옵션 버튼을 본 적이 있으실텐데요. 선택된 옵션과 선택되지 않은 옵션에 대해 배경색 등으로 차이를 주어 선택한 옵션을 시각적으로 알 수 있는 기능입니다! 오늘은 이와 같은 기능을 구현하기 위해 제가 사용했던 방법을 알려드리겠습니다. 먼저, 첫번째로 시도했던 방법입니다. @IBOutlet var oneWeek: UIButton! //1주 @IBOutlet var oneMonth: UIButton! //1달 @IBOutlet var threeMonth: UIButton! //3달 @IBOutlet var sixMonth: UIButton! //6달 ViewController에 4개의 UIButton을 생성해 주고 IBOutlet으로 각 버튼을 스토리보드에..
https://programmers.co.kr/learn/courses/30/lessons/12946 코딩테스트 연습 - 하노이의 탑 하노이 탑(Tower of Hanoi)은 퍼즐의 일종입니다. 세 개의 기둥과 이 기동에 꽂을 수 있는 크기가 다양한 원판들이 있고, 퍼즐을 시작하기 전에는 한 기둥에 원판들이 작은 것이 위에 있도록 순서대�� programmers.co.kr 재귀를 이용해 구현하였습니다. C++ 소스 코드 #include #include using namespace std; vector answer; void hanoi(int n, int from, int to, int tmp){ vector temp = { from, to }; if (n == 1) answer.push_back(temp..
https://programmers.co.kr/learn/courses/30/lessons/12949 코딩테스트 연습 - 행렬의 곱셈 [[2, 3, 2], [4, 2, 4], [3, 1, 4]] [[5, 4, 3], [2, 4, 1], [3, 1, 1]] [[22, 22, 11], [36, 28, 18], [29, 20, 14]] programmers.co.kr C++ 소스 코드 #include #include using namespace std; vector solution(vector arr1, vector arr2) { vector answer; int r = (int) arr1.size(); int c = (int) arr2[0].size(); vector a; a.resize(c,0); answ..
퀵 정렬은 분할정복 기법으로 pivot값을 이용해 정렬하는 알고리즘입니다. 한 번 수행할 때 마다 크기가 반씩 줄어들며, pivot 값을 기준으로 왼쪽은 pivot 보다 작은 수, 오른쪽은 pivot보다 큰 수들이 모이게 됩니다. 퀵 정렬은 평균적으로 O(NlogN)의 시간복잡도로 수행되지만 최악의 경우 O(N^2)의 시간복잡도를 가집니다. C++ 소스 코드 #include using namespace std; int nums[] = {3,6,1,2,9,7,4,4,10,8}; void quickSort(int s,int e){ if (s>=e) return; int p = s; int i = s+1; int j = e; while(i j){ // 인덱스가 엇갈렸으면 작은 수, pivot swap int ..
삽입정렬은 현재원소를 앞의 원소들과 비교해가며, 적절한 위치에 삽입하는 정렬기법입니다. for문과 while 문을 중첩하기에 O(N^2)의 시간복잡도를 가집니다. C++ 소스 코드 #include using namespace std; int main(){ int nums[] = {3,6,1,2,9,7,4,5,10,8}; for(int i=0;i=0 && nums[j]>nums[j+1]){ int temp = nums[j]; nums[j] = nums[j+1]; nums[j+1] = temp; j--; } } for(int i=0;i nums[j+1] { let temp = nums[j] nums[j] = nums[j+1] nums[j+1] = temp j-=1 } } for num in nums { pr..
- Total
- Today
- Yesterday
- Lottie
- UIHostingController
- 안드로이드
- SwiftUI
- rxswift
- 카카오인턴십
- Swift unowned
- coreml
- cocoapods
- 알고리즘
- infallible
- 백준
- disposeBag
- GraphDB
- 코코아팟
- Reactivex
- DispatchQueue
- ios
- Swift
- SWEA
- 백준온라인저지
- ARKit
- rxswift6
- blendshape
- blendshapes
- Swift weak
- C++
- Kotlin
- boj
- 프로그래머스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |