2019 Monthly I Learned - kirseia/study GitHub Wiki
๊พธ์คํ ์ ์์๊ฒ์ธ๊ฐ...
- Today I Learned (TIL)์ ๋ฌด๋ฆฌ์ผ๊ฒ ๊ฐ์์ ์๋ณ๋ก -_-);
2019.12
- ํ๊ธ ์ ๋์ฝ๋ ์กฐํฉ/๋ถ๋ฆฌ
- iOS ๋์คํฌ ์ฉ๋ ๋ถ์กฑ ํ ์คํธํ๊ธฐ
- Context Menu Tutorial
- ๋น๊ฐ๋ฐ - 2020๋ ํฌํค ์ปฌ๋ฌ
- ๊ธฐ๋ณธ์ผ๋ก... SOLID ์์น
- iOS ๋ฌด์ ๋๋ฒ๊น
- ์ฑ ์ง๋จ
- InApp Rating & Review
- UITest ํ ๋ ์๊ฐ ๋จ์ถํ๋ ๋ฒ
- AVFoundation ์ ์ฌ๋ฐ๋ ๊ฒ... -_-)
AVMutableCompositionTrack.insertTimeRange ๋ emptyTimeRange๋ฅผ ๋ฐ์ด๋ด๊ณ 'insert' ๋๋ค.
emtpyTimeRange๊ฐ 0~50์ด๊ฐ ์์ ๋
insertTimeRange ๋ฅผ 10~20์ด ๊ตฌ๊ฐ์ ํ๋ฉด... ์ ์ฒด timeRange๋ 0~10(empty), 10~20(insert๋..), 20~60(empty)๊ฐ ๋๋ฒ๋ฆผ
์์ ์๊ฐ ์์๋๋ก insert ํ์ง ์์ผ๋ฉด emtpyTimeRange๊ฐ ๋ฐ๋ ค๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค...
- ViewController ๊ฐ ์ต์ด๋ก ๋ณด์ฌ์ง ๋ ์ฒ๋ฆฌ
- collectionView.reloadItems ์ ๋๋ฉ์ด์ ์์ด ํ๊ธฐ
UIView.performWithoutAnimation {
self.collectionView.reloadItemsAtIndexPaths(indexPaths)
}
- collectionView.scrollToItem ์ ๋๋ฉ์ด์ ๊ธธ์ด ์กฐ์
UIView.animate(withDuration: 5, animations: { [weak self] in
self?.collectionView.scrollToItem(at: IndexPath(item: 10, section: 10), at: .middle, animated: false) // false ๊ฐ ํต์ฌ
})
2019.11
- ์์ดํฐ์์ ๊ฐ๋ฐ ๋ฐ์ดํฐ ์ถ์ถํ๊ธฐ
- SwiftUI๋ฅผ ์ด์ฉํ UIKit View Preview๋ง๋ค๊ธฐ
- Swift ์์ MARK์ ์๋ฏธ
- ์ซ์ ์ ๋๋ฉ์ด์ (๊ณตํญ ํญ๊ณตํธ ๋ณด๋๊ฐ์...?) ์ฒ๋ฆฌ
- ๋คํฌ๋ชจ๋๋ฅผ ์ํ ์ปฌ๋ฌ ์ฝํธ๋ผ์คํธ
- Unused image resource ์ฐพ๊ธฐ
- Unused Code ์ฐพ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ
2019.10
- SwiftUI AVPlayer - Progress Binding
- swiftui traits
- performance ์ธก์ ํ๊ธฐ MetricKit
- cpu / gpu / framerate / location / celluar condition / memory / disk io ...
- ์ฝ๋ ๋ฆฌ๋ทฐ ํ - ๋ฌด์์ ๋ณผ ๊ฒ์ธ๊ฐ
- ์ ๊ท์ ์ฌ์ ์กฐ์ง์์ฐฉ ๊ณผ์
- OpenCV
- UX ์ฐ๊ตฌ, ์ด๋ฆ/์ฑ ๋ณด๋ค๋ FullName ์ ์จ๋ผ
2019. 9
- CloudKit
- SwiftUI in Playgrounds
- Full Text Search ํ๊ธฐ - SQL์ ์จ๋ผ, Core Data๋ ์ฐ์ง๋ง
- DB Query Error ์ฐพ๊ธฐ - https://www.eversql.com/sql-syntax-check-validator/ ๋ฅผ ํ์ํ์
- AVAudioMix ์์ fade in out ํ ๋ 0 -> volume n ์ผ๋ก ํ๊ณ , n -> 0 ์ผ๋ก ํ๋ฉด pop noise ๋ฐ์. 0.0001 -> n / n -> 0.0001 ํ๋ฉด ๊ด์ฐฎ์. - ๋ ์๊ด์ฐฎ์. fade in ์์ํ๊ธฐ ์ ๊น์ง์ ๋ณผ๋ฅจ์ 0 ์ผ๋ก ์ธํ ํด์ผ ํจ.
- Text๊ฐ ์ด๋ค ์ธ์ด์ธ์ง ๊ฒ์ฌํ๊ธฐ - NLLanguageRecognizer
- ์ด๋ชจ์ง๋ ํ ์คํธ ์ปฌ๋ฌ alpha๊ฐ ์ ์ฉ๋์ง ์๋๋ค (์ด์ฉ๋ฉด ๋น์ฐํ๊ฒ) ์ด๋ชจ์ง์ alpha ๋ฅผ ๋ฃ์ผ๋ ค๋ฉด label.alpha ์ ์ ์ฉํ์
- ๋ณ์/๋ฉ์๋ ์๋ช ๋ฒ
- ์ฝ์ง ๊ธฐ๋ก Timer.scheduledTimer(withTimeInterval: ... , repeats: ...) ์ด ๋์์ํ๋ ์ด์
- main thread ์์ ๋ฑ๋กํ์ง ์์์ repeat์ด ๋์ง ์์์์
- UIView animation ์ฒ๋ฆฌํ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ - UIViewPropertyAnimator
- animation cancel ์ด ๊ฐ๋ฅํจ, displayLink ์ ํ์ด๋ฐ์ ๋ง์ถ ์ ์์
- https://www.thinkandbuild.it/quick-guide-animations-with-uiviewpropertyanimator/
- https://www.appcoda.com/interactive-animation-uiviewpropertyanimator/
- CollectionView DragDelegate/DropDelegate - WWDC Drag&Drop Articles
- Testability ๋์ ์ฝ๋ ์์ฑํ๊ธฐ
- SRP๋ฅผ ๋์ด๋ ๋ฐฉ๋ฒ์ด๊ธฐ๋ ํฉ๋๋ค.
- Sign in with Apple ์ ๋ฆฌ - qiita
- ๊ฐ๋ฐ์ ์ฑ์ฉ๋ ์ด๋ค ์ ์ ๋ณผ ๊ฒ์ธ๊ฐ - qiita ์ํฐํด
- Array ํฉ์น๊ธฐ (https://stackoverflow.com/questions/25146382/how-do-i-concatenate-or-merge-arrays-in-swift)
let array1 = [1, 2, 3]
let array2 = [4, 5, 6]
let flattenArray = [array1, array2].flatMap({ (element: [Int]) -> [Int] in
return element
})
- Custom Transition - ViewController
- Typographic
- URL ์ธ์ฝ๋ฉ ์ต์
- SHA1 ์์ฑํ๊ธฐ
- VisionKit/Metal ์ด์ฉํ ์ฌ์ง ์๊ธฐ
- VisionKit ์ด์ฉํ ๊ณ ์์ด /๋ฌธ์ ์ธ์
- ARKit ์ ์ด์ฉํ FaceTracking
- Xcode ์ปดํ์ผ ์๋ ํฅ์ ํ
- var ๋ณด๋จ let ์ฌ์ฉ, final class ์ฌ์ฉํ ์ ์์ผ๋ฉด ์ฌ์ฉ, let a = "a" ๋ณด๋ค๋ let a: String = "a" ์ฌ์ฉ ๋ฑ.
- iOS ์คํ๋์ ์ด๋ฏธ์ง
- os ๋จ์์ ์บ์๋จ, uiview ์ bg color ๋ฑ์ ์บ์ ์๋๋๋ฐ ์ด๋ฏธ์ง ๋ฑ์ ์บ์๋จ, ์ญ์ ํ ์ฌ๋ถํ ํ๊ณ ์ฌ์ค์นํด์ผ ์บ์๋ ๊ฑธ ์ญ์ ๊ฐ๋ฅ
- MVVM with Combine
2019. 8
-
iOS ์ฑ ๋น๋ํ์ ๋ ํ๋ ์์ํฌ, ๋ฆฌ์์ค, ์ฝ๋๊ฐ ์ฐจ์งํ๋ ์ฉ๋ ์๊ธฐ - ๋์ด์คํ ๋ฐฉ๋ฒ์ ์๋ค์...
-
ํ์ผ์ ํ๊ธ ๊ฒ์ํ๊ธฐ '[๊ฐ-ํฃ]+' ์ ๊ท์์ผ๋ก ๊ฒ์
-
AVFoundation - Export ๊ฒฐ๊ณผ์ ์ด๋ก์์ค
- width / height๊ฐ 16์ผ๋ก ๋๋ ์ง์ง ์๋ ์ซ์๋ฉด ๊ทธ๋ด ์ ์๋ค๊ณ ํจ
-
- Provider / Target / Endpoint๋ก ๊ตฌ๋ถ, ๊ฐ๊ฐ์ ์ญํ ์ ์ ์ดํด, ๊ตฌํํ๋ฉด ๋จ
-
StackView์ ๋ทฐ ์ถ๊ฐํ๊ธฐ
- addSubView๊ฐ ์๋๋ผ addArrangedSubview๋ฅผ ์ฌ์ฉํด์ผ ํจ, ์ญ์ ๋ removeFromView๋ง๊ณ removeArragedSubview๋ฅผ ์ฌ์ฉํ๊ธฐ
-
AVAssetWriterInput ์ฌ์ฉํ ๋ isReadyForMoreMediaData ์ฌ์ฉ
- isReadyForMoreMediaData ๊ฐ KVO๋ผ์ ์ ๋งํฌ์ฒ๋ผ ์ฌ์ฉํ๋ฉด ์ข ๋ ํจ์จ์ (wait ์ฝ๋ ๊ฐ์๊ฑฐ ์์ด ์ฒ๋ฆฌ ๊ฐ๋ฅํจ)
2019. 7
- ์ฌ์ฉํ์ง ์์ ์ฝ๋ ์ฐพ๊ธฐ & ์ค๋ณต ์ฝ๋ ์ฐพ๊ธฐ ์ ๋ฆฌ
- ์ฌ์ฉํ์ง ์์ ์ฝ๋ ์ฐพ๊ธฐ
- ์์ค ์ค๋ณต์ฝ๋ ์ฐพ์๋ด๊ธฐ - ํ๋ฌ๊ทธ์ธ(?)
- Apple ID + Firebase ์ฌ์ฉ - ์ผ๋ณธ์ด
- Swift 5.1 Collection Diffing - ์ผ๋ณธ์ด
- Swift 5.1 ๋ณํ
- ๋คํฌ๋ชจ๋๋ฅผ ์ํ ํ ์คํธ ์ปฌ๋ฌ ๊ณ์ฐํ๊ธฐ (๋ฐฐ๊ฒฝ์์ ๋ค๋ฅธ ํ ์คํธ ์ปฌ๋ฌ ๊ณ์ฐ)
- Date ์ฐ์ฐ ์ฝ๊ธฐ ์ฝ๊ฒ ํํํ๊ธฐ - Calendar ์ฌ์ฉํ๊ธฐ
- NSDateFormatter ํ๋ฆฌ๋ทฐ
- Xcode Cache ์ ๊ฑฐํ๊ธฐ
- ์ฌ์ฉํ์ง ์๋ ์ด๋ฏธ์ง ์ ๊ฑฐํ๊ธฐ
- Carthage on Xcode run script build phase
- iOS Texture (metal, opengl...) ๊ธฐ๋ณธ ์ปฌ๋ฌ ํฌ๋งท - BGRA๊ฐ ๊ธฐ๋ณธ. rgba ๋ก ํ๋ฉด reorder ๋๋ฌธ์ ์ฝ๊ฐ์ ์๋์ ํ๊ฐ ์๋ค
- Network Framework - ์๋ฌธ
- UIKeyCommend - ๋จ์ถํค (์๋ฌธ)
- ๊ฐ์ข ํฌ๋งคํฐ ์ ๋ฆฌ (์๋ฌธ)
- ์ฑ ์ ๊ธฐ๊ตฌ๋ ๊ฒฐ์ ๊ด๋ จ ์ ๋ฆฌ , ๊ตฌํ
- Encoding/Decoding in Swift (json codable)
- Xcode Project Renaming , ์ฐธ๊ณ 2), ์ฐธ๊ณ 3)
- LivePhoto Extract , ๋๋ฒ์งธ
- Xcode11 ๋ณ๊ฒฝ ์ฌํญ, ์ผ๋ณธ์ด
- CAEmitterโLayer/์์ข ์ด ๋ฟ๋ฆผ ํจ๊ณผ ๋ ์ด์ด ๋ง๋ค๊ธฐ
- PropertyWrapper - Swift 5.1์ ์ถ๊ฐ๋๋ ๊ธฐ๋ฅ
- NSObject.prepareForInterfaceBuilder()
- @IBDesignable ์ด ์์ ๋ object ์์ฑ ์์ ์ ์ธํฐํ์ด์ค ๋น๋๊ฐ ํธ์ถํจ, ๋ณด์ฌ์ง๊ธฐ์ ์ธํ ํ ๊ฐ๋ค์ ์ธํ ํ ์ ์์ (์์ )
- TextKit
- iPad Apps for Mac
- iOS13 ๋์์ธ ์ถ๊ฐ๋ ๊ฒ
- Notification ์ฌ์ฉ
- ์ ํ ์ฑ์คํ ์ด ์ฑ ๋ฑ๋ก ๋ฐฉ๋ฒ
- ์ด๋ฏธ์ง์ Tint Color ๋ฐ๋ก ๋ฐ์ํ๊ธฐ
- ํ ์ค ์์ฝ - self.imageView.tintColorDidChange() ๊ฐ ํธ์ถ๋์ด์ผ ํ๋๋ฐ ๊ทธ๋ฅ Storyboard์์ ์ธํ ํ๋ฉด ์๋์ ์ฝ๋๋ก ํธ์ถํด์ฃผ๋ฉด ๋จ. ์์ ๋ฐ์์ awakeFromNib์ override ํ ๋ค์ ์ธํ ํด์ฃผ๋ฉด ๋จ
- ๋คํฌ๋ชจ๋์์์ Color ์ฌ์ฉ
- ์คํ ๋ ์ด์์์์ leadingAnchor๊ณผ leftAnchor, trailingAnchor๊ณผ rightAnchor์ ์ฐจ์ด
- CollectionView Cell Reordering
- ํต์ฌ์ override func collectionView(_ collectionView: UICollectionView, moveItemAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) ๋ฅผ ๊ตฌํ ํ๋ ๊ฒ
- ๋๋ https://www.raywenderlich.com/9477-uicollectionview-tutorial-reusable-views-selection-and-reordering ์ฐธ๊ณ , UICollectionViewDragDelegate ๋ฅผ ํ์ฉ
- ์ํ
2019. 6
- ViewController ์ ํ ์ ๋๋ฉ์ด์ (ํธ๋์ง์ , Transition)
- ์ ์ธํ(Declarative) vs ๋ช ๋ นํ ํ๋ก๊ทธ๋๋ฐ(Imperative)
- [weak self] ๋ ์ธ์ ์ธ๊น?
- UIRefreshControl + UITable
- ๋งฅ์์ ์์ฑ ์ฝ๊ธฐ ๊ธฐ๋ฅ ํ์ฉํ๊ธฐ
- CloudKit
- iOS 13์ ๋น์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ์ด๋ฏธ์ง ์ ์ฌ๋, ๋๋ฌผ ๋ํ ์ , detection ์ถ์ (depth camera ๊ฐ์?), ์ธ๊ทธ๋ฉํ ์ด์ , ์๋ฆฌ ๋ถ์, CIFilter ๊ด๋ จ ๋ณ๊ฒฝ ๋ฑ๋ฑ
- iOS Library Cheet Sheet
- Firebase Translate text with ML Kit on iOS
- ์ธ์ด ๋ชจ๋ธ์ด ๋ค์ด๋์ด์์ผ๋ฉด ์คํ๋ผ์ธ๋ ๊ฐ๋ฅ
- Ref. https://qiita.com/iincho/items/383292240a04162b1e63
- iOS 13 ๋ณํ์
- iOS 13๋ถํฐ ์ฌ์ฉ๋ ์์คํ ์ด๋ฏธ์ง ์ ๊ทผํ๊ธฐ
- iOS 13์ Dark mode
- SwiftUI - ๊ณต๋ถ
- Combine Framework
2019. 5
- 5์์ ํ๋ก์ ํธ๊ฐ ๋ฐ์๊ณ ๋ฆฌํ๋์ ํด๊ฐ ๊ด๊ณ์ ๊ฑฐ์ ๋ชป ์ธ๊ฑฐ ๊ฐ๋ค ๐ญ
- iOS layout update ๊ฐ์ด๋
- ๋ฒํผ ๋์์ธ ๊ฐ์ด๋
2019. 4
- ์์ด๋น์ค๋น์ ๊ทผ๋ฌด์์น ๊ณผ ํฌ์คํธ๋ชจํ
- OverCurrentContext vs OverFullScreen modalPresentationStyle
- Slack Alternative
- swift ์ฝ๋ ํ ํ๋ฆฟ - ์ด๋ฐ๊ฒ๋ ์๋ค...
- XCode project template ๋ง๋ค๊ธฐ
- open vs public access control
2019. 3
- KeyPath List Observing
- Swift 5.0 ์ถ์ - ๋ญ๊ฐ ๋ฐ๋์๋
- ๊ฐ์ธ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก ๋ณ๊ฒฝ - Adobe XD์ฌ์ฉ
- Xcode Tip ์ ๋ฆฌ๋ฒ์
- Xcode Tool Tips
- iOS ๋น๋์ค PIP ์ฌ์ ๊ตฌํ
- Swift: IndexPath ๋ก 2d array ์ ๊ทผํ๊ธฐ
- iOS ์ฑ ํธ์ถ ์์
- ReverseGeocode Hang ์์
2019. 2
- CoreAnimation ์์ ํด ์กฐ์ฌ
- Array ์์ ํน์ ์๊ฐ์ ํฌํจ๋ ์์ดํ ๋ชจ๋ ์ฐพ๊ธฐ
- ํ ์คํธ ๊ทธ๋ผ๋ฐ์ด์ ๋ฃ๊ธฐ
- Youtube ์์ ๋ค์ด๋ก๋
- Moving Poster ๋ฆฌ์์น
- HEVC / HEIF ํ์ผ ์ฒ๋ฆฌ
- ios10 ์์ hevc ์ ๊ฒฝ์ฐ ์ฌ์ง์์๋ ๋ก๋ ๋๋๋ฐ ๋ด๊ฐ ๋ง๋ ์ฑ์์ ๋ก๋๊ฐ ์๋จ (icloud ๋ค์ด๋ก๋ ์คํจ)
- ๋ค์ด๋ก๋ ์์ฒญ ํ ๋ PHVideoRequestOptions ์์ deliveryMode ๋ฅผ highQualityFormat ์ผ๋ก ๋์์ ๊ทธ๋ผ. automatic ์ผ๋ก ์์ ํ๋ฉด ๋จ. ios11 ์ด์์์๋ high / ๊ทธ ์๋๋ automatic ์ผ๋ก ํด๋ ๋๊ธด ํจ.
- ๋ฌด๋ฃ๋ก ์ฌ์ฉ๊ฐ๋ฅํ ์์
๋ค
- ์์ ์ ์ด์ฉ๊ฐ๋ฅํ ๋ผ์ด์ผ์ค๋ก ๊ฒ์ํด์ ์ฌ์ฉํ๋ฉด ๋จ
- Ref. CC - https://creativecommons.org/licenses/by/3.0/deed.ko
- AVFoundation ์คํฐ๋ ๋ก๋๋งต
- (offline) geocoder
- MVVM ์๋ก์ด ๋ฐฉ์ - protocol oriented programming ๊ณผ ๊ฒฐํฉ
- MVVM
- PHAsset / AVAsset / UIImage / CIImage / CGImage / NSData ์์ ์์น ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ
- clustering ์๊ณ ๋ฆฌ์ฆ
- swiftformat ์ฌ์ฉํด๋ณด๊ธฐ
- ์ธ๋งํจ. ํค๋ ์ง์์ฃผ๋๊ฑฐ ์ธ๋ฐ์๋๊ฒ ์ ๋ฆฌํด์ฃผ๋๊ฑฐ ๋ง์ ๋ฌ.
- swiftlint ๋ ์ถฉ๋(?)๋๋ ๊ฒ๋ค์ ์ต์ ๋ง์ถฐ์คํ์ ์์.
2019.1
- ๋ก์ปฌ์ ์๋ iCloud Asset ์ฒ๋ฆฌ
- Github์ ๋ธ๋ก๊ทธ ์ฌ๋ฆฌ๊ธฐ
- Github ํ์ด์ง์ ๊ด๊ณ ์ฌ๋ฆฌ๊ธฐ (๊ตฌ๊ธ ์ ๋์ผ์ค)
- iOS VC
PresentedViewController - ์์ ์ด ํธ์ถํ VC
PresentingViewController - ์์ ์ ํธ์ถํ VC
- Swift - Generic type vs Associated type
- ๊ธฐํ
Inbox
- clean swift - ์ ๋ฆฌํ๊ธฐ
- viewDidLoad ์์ VC present ์ฒ๋ฆฌํ๊ธฐ - ์ถ๊ฐ๋ก ๊ธ ์จ์ผํจ
- zenhub ์์๋ณด๊ธฐ
- https://developer.apple.com/documentation/foundation/datecomponentsformatter/unitsstyle
- [Template Image] ...
- WKWebView - ์ ๋ฆฌํ์. ๋ณด๊ณ ์๋ ํ์ด์ง ํ์ดํ ๋ณด์ฌ์ฃผ๊ธฐ, navigation history ๊ฐ์ ธ์ค๊ธฐ, ํ์ด์ง ์ ํ ์ฒ๋ฆฌ
- https://digitalleaves.com/blog/2017/07/drag-and-drop-on-ios/ <- ๊ตฌํํด๋ณด๊ธฐ