전체 글
-
[Swift] MVVM의 VM : ViewModel 이란?Swift 2022. 7. 26. 04:51
view를 멍청하게 만드는 것이다 말인즉슨 view는 많은 정보를 알고 있을 필요도 없고 알아야할 이유도 없으며 딱 시키는 일만 하면 된다 그게 view model을 쓰는 이유다 의존성과 관련이 있는 이야기 인데 만약 뷰가 너무 많은 정보에 대해 접근성이 있고 예민하게 반응한다면 쉽게 피로해 진다 무슨 말일까?? 예를 들면 뷰에 보여주지도 않을 정보를 바인딩해서 전부 알려준다면 뷰는 쓰지도 않을 프로펄티 값때문에 해당 값이 변할때 마다 뷰를 다시 그려주는 경우가 생길수도 있다. 하지만 뷰가 딱 쓸 정보만 갖고 있다면 뷰는 보여줄 정보만 신경쓰기 때문에 불필요한 정보에 대해 반응 하지 않아도 된다
-
[WidgetKit] widget의 timeline을 재설정하고 즉시 update하자Swift/WidgetKit 2022. 7. 25. 11:29
보이는거와 같이 나의 위젯이 보여질 내용을 선택한다면 즉시 그 변경 내용을 위젯에 반영하고 싶다 그렇게 하려면 지금 위젯에 들어가있는 timeline을 다시 정의할 필요가 있다 이런 작업을 main app에서 WidgetCenter을 호출해서 명령할수 있다 알아보자 나의 widget extension에서 kind: String을 넣어주었을것이다 이 값을 이용할꺼다 현재 나의 widget은 15분 마다 refresh해주게끔 되어있다 이 code 는 App Group의 main app에서 button이 click 되었을때에 호출하는 함수이다 WidgetKit를 import 하고, WidgetCenter를 호출해서 보이는 code 처럼 작성하면 된다 parametere ofKind는 widget app의 ki..
-
[SwiftUI] BackgroundTaskSwift/SwiftUI 2022. 7. 25. 10:36
Apple Developer Documentation developer.apple.com Efficiency awaits: Background tasks in SwiftUI - WWDC22 - Videos - Apple Developer Background Tasks help apps respond to system events and keep time-sensitive data up to date. Learn how you can use the SwiftUI Background... developer.apple.com
-
[UIKit, SwiftUI] Assets에 Color 지정하고 불러오기Swift 2022. 7. 23. 15:52
Assets에다가 이런식으로 Color 추가 할수 있다 각 Color는 이렇게 Any, Dark를 지정할수 있는데 Device의 mode가 light이면 any, dark 라면 dark로 보여줄것이다 그리고 폴더 하나 만들고 거기에 Color+.swift하나 만들어준다 그리고 Color의 property로 원하는 변수명 적고 asset에 저장했던 color name 넣어주면된다 그리고 이런식으로 view에서 color 넣어주면 잘됨 ㅎ
-
[WidgetKit] widget의 특정 item이 tap 되었을 때 mainApp으로 뭔가를 해보자 : widgetURL(deep Link)Swift/WidgetKit 2022. 7. 23. 02:28
widget 쪽에서 onTap됐을 때 해당 링크를 request 시킨다 mainApp쪽에서 (받는 쪽)에서 url validate 하는 방법이다 validate 해서 guard 통과해서 다음으로 넘어갔으면 대충 이런식으로 url에서 가지고온 query 가져다 쓰면 된다 A SwiftUI WidgetKit Deep Link Tutorial – Answertopia WidgetKit deep links allow the individual views that make up the widget entry view to open different screens within the companion app when tapped. In addition to the main home screen, the Widget..
-
[UIKit] CollectionView의 contentSize는 언제 할당 되는가? : view 가 그려지고 layout이 계산 되는 순서Swift/UIKit 2022. 7. 22. 16:47
호출 순서 1. viewDidLoad { print(collectionView.collectionViewLayout.collectionViewContentSize.height) } -> 0.0 2. viewWillAppear { print(collectionView.collectionViewLayout.collectionViewContentSize.height) } -> 0.0 3. viewWillLayoutSubViews { print(collectionView.collectionViewLayout.collectionViewContentSize.height) } -> 0.0 4. viewDidLayoutSubviews { print(collectionView.collectionViewLayout.col..
-
[UIKit] collectionView를 dynamic height로 구현해보자Swift/UIKit 2022. 7. 22. 00:51
final class UserViewController: UIViewController { private let feedCollectionView: UICollectionView = { let surfaceLength = UIScreen.main.bounds.width / 3 let layout = UICollectionViewFlowLayout() layout.estimatedItemSize = CGSize(width: surfaceLength, height: surfaceLength) layout.minimumLineSpacing = 0 layout.minimumInteritemSpacing = 0 layout.sectionInset = UIEdgeInsets(top: 0, left: 0, botto..
-
[Swift] property의 값을 가지고와 다른 property의 값에 넣어주자 : lazy varSwift 2022. 7. 17. 23:48
lazy 라는 키워드는 해당 property가 호출될때 실행된다 말인 즉슨 SomeClass의 instance가 생성이 된다면 someString에 값이 들어간다 그 시점에 someStringOfsomeString의 값은 할당 되어 있지 않았다. 하지만 instance.someStringOfsomeString이라고 호출하면 그제서야 값이 할당이 되어 호출이 된다. 말인 즉슨 같은 class 내 다른 property의 값도 가지고와 쓸수 있다는 말이다. 왜 lazy가 아니면 다른 property의 값을 가져다 쓸수 없을까? 그것은 init되는 시점에 다른 property 들의 값이 다 들어가 있지 않을수도 있고 버그를 일으킬 가능성이 많기 때문에 애초에 막아 놓은거 같다. 그리고 또 언제 사용할수 있을까?..