일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MVVM
- swift documentation
- Observable
- UITextView
- uitableview
- uiscrollview
- ribs
- SWIFT
- 스위프트
- rxswift
- 리펙터링
- map
- Clean Code
- combine
- Human interface guide
- HIG
- 클린 코드
- swiftUI
- tableView
- ios
- RxCocoa
- Xcode
- 애니메이션
- Protocol
- 리펙토링
- collectionview
- 리팩토링
- UICollectionView
- clean architecture
- Refactoring
- Today
- Total
목록분류 전체보기 (1645)
김종권의 iOS 앱 개발 알아가기

https://github.com/kaishin/Gifu mp4 파일 재생 animation이 동작할 UIImageView 추가 애니메이션을 실행시킬 playVideo 함수 추가 private func playVideo(with resourceName: String) { guard let path = Bundle.main.path(forResource: resourceName, ofType: "mp4") else { return } let player = AVPlayer(url: URL(fileURLWithPath: path)) let playerLayer = AVPlayerLayer(player: player) playerLayer.frame = animationView.bounds animationV..

stride 키워드 주의 stride(from:to:by:) to를 포함하지 않음 stride(from:through:by) through를 포함 for i in stride(from: 0, to: 5, by: 1) { print(i) // 0, 1, 2, 3, 4 } for i in stride(from: 0, through: 5, by: 1) { print(i) // 0, 1, 2, 3, 4, 5 } // cf) Closed range for i in 0...5 { print(i) // 0, 1, 2, 3, 4, 5 } Range 제네릭이며 '반개방'상태(A..
Font 패밀리 이름을 가지고 enum으로 만들어 사용 font.regular로 접근할 수 있도록 정의 enum Font: String { case Regular = "myFont-Regular" case Bold = "myFont-Bold" func of(size: CGFloat) -> UIFont { return UIFont(name: self.rawValue, size: size)! } static func regular(size: CGFloat) -> UIFont { return Font.Regular.of(size: size) } static func bold(size: CGFloat) -> UIFont { return Font.Bold.of(size: size) } } 사용 Font.regul..

변환형 - 특정 문자열을 입력하면 그 문자열만 bold로 바꾸는 방법 UILabel extension으로 정의 extension UILabel { func bold(targetString: String) { let fontSize = self.font.pointSize let font = UIFont.boldSystemFont(ofSize: fontSize) let fullText = self.text ?? "" let range = (fullText as NSString).range(of: targetString) let attributedString = NSMutableAttributedString(string: fullText) attributedString.addAttribute(.font, va..

App Thinning, App Slicing * Thin: 얇은, 가는 App Thinnng: 각 디바이스 맞춤으로 필요한 내용만을 만들어서 앱 번들을 만들고 전달하는 과정 앱의 구성 요소 앱의 구조1 앱의 구조2 앱의 구조3 Excutable Code의 구성 요소 Executable Code안의 Resources의 구성 요소 - assets Excutable Code안의 Resources의 구성 요소 - graphic Excutable Code안의 Reouseces의 구성 요소 - 기타 앱 구성 요소의 모든 것 App Slicing을 통해 각 디바이스에서 필요한 내용만을 선택학여 앱 번들로 만들고 전달하는 과정 ODR ODR(On Demand Resoueces): 특정 리소스들이 필요할 때, 앱스토어..

고차함수 고차함수: parameter로 함수를 받는 함수 - higher order function: 함수 내부에서 일어나는 특성 (함수를 인수로 받는 것, 함수를 리턴하는 것) - first class: 함수 외부에서 일어나는 특성 (함수를 변수에 대입 가능한 것) let numbers = [1, 2, 3, 4] let newNumbers = numbers.map { number in return number + 1 } 대표적으로 3가지 존재: map(맵핑), filter(추출), reduce(결합, 차원을 줄여주는 것) - reduce는 초기값을 넣어주고, 클로저의 인수는 누적해서 쌓이는 값 하나와 배열의 값 let numbers = [1, 2, 3, 4] let mapEx = numbers.map ..

Tag와 Release tag를 작성하여 등록해놓으면 자동으로 Release정보가 아래처럼 생성 Release 정보를 작성하고 싶은 경우 -> tag를 작성하여 관리 1. Terminal에서 tag 사용 방법 tag 설정이란 커밋을 참조하 쉽도록 알기 쉬운 이름을 붙이는 것 한 번 붙인 태그는 브랜치처럼 위치가 이동하지 않고 고정 tag의 종류 일반 tag: 이름만 붙일 수 있는 것 주석 tag: 이름 / 설명 / 서명 / timestramp 정보 모두 가능 release branch에서는 주석 태그를 사용, feature branch에서는 이름만 붙이는 태그 사용 일반 tag 사용 방법 tag 이름 설정 (현재 HEAD에 tag 설정) $ git tag 특정 commit 버전에 tag 다는 방법 $ g..

행위(behavior) 요구사항을 기계에 구현하고 버그를 수정하는 일이 개발자의 모든 일이 아님을 깨닫는게 중요 개발자를 고용하는 이유는 이해관계자를 위해 기계가 수익을 창출하거나 비용을 절약하기 위함 곧 이해관계자가 기능 명세서나 요구사항 문서를 구체화할 수 있도록 돕는 임무를 포함 아키텍처(architecture) 핵심은 'sofrware': 부드러운(soft) 제품(ware) 소프트웨어는 부드러움을 지니도록 구성 - 기계의 행위를 쉽게 변경할 수 있도록 하기 위함 부드럽다는 의미는 변경하기 쉬워야하며 이해관계자가 기능에 대한 생각을 바꾸면 변경사항을 간단하고 쉽게 적용할 수 있어야함 변경사항을 적용하는 데 드는 어려움은 변경되는 형태와는 관련이 없어야하며, 범위에 비례해야함 ex) 잘못개발 사례: ..