일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- TCA
- 네트워크
- 멋쟁이사자처럼
- widget
- 스위프트
- 후기
- 운영체제
- 알고리즘
- 백준
- SwiftUI
- 리액트
- widgetkit
- spritekit
- dispatchqueue
- 멋사
- 대외활동
- c++
- cs
- composable architecture
- 문법
- 컴퓨터그래픽스
- 영남대
- Swift
- uikit
- 스유
- swift concurrency
- 웹
- ReactorKit
- Protocol
- 위젯킷
- Today
- Total
목록앱 (115)
맛동산이
위젯의 주요 3요소는 다음과 같다. 1. configuration 2. provider 3. entryView Provider bookmark 이 아티클을 읽어보면 이해가 갈수 있는데, widget의 경우에는 계속해서 활성상태로 가있는것이 아니다. 즉 메모리에 항상올라와있는것이 아니며, 반면 계속해서 업데이트 되어야 하는데 이때 사용하는 방법이 TimeLineProvider와 TimeLine이다. 즉 위젯이 계속해서 로드되어 있다면, 시스템 리소스와 네트워킹 그리고 베터리 소모가 크기 때문에 이를 막기 위해서 요청하는 업데이트의 빈도와 횟수를 제한하기 위한 객체이다. Timeline 타임라인은 기본적으로 위젯이 언제 업데이트 될것인지에 대한 정보이다. 앞서 말했듯 위젯은 항상 업데이트가 자동으로 되는것이..
EntryView EntryView가 실제로 유저에게 보여지는 뷰 이다. entryView는 기존의 뷰와 다르게 찍어낸 데이터를 받아오는것이기 때문에 내부에서 데이터를 변경하는것이 불가능하다. 따라서 entryView에 데이터를 넣어주는 방법은 Provider를 통해서 넣어주는 방법이다. 데이터를 넣어주는 방식은 다음과 같다. 1. TimelineEntry 데이터 정해주기 기존의 우리가 넣어줄 데이터를 TimelineEntry라는 객체에 넣어준다. 해당 객체는 기본 프로젝트를 만들면 있으며, 이름은 자유롭게 변경 intentConfiguration이라면, configuration이 있을것이며 그렇지 않다면 없을것이다. 2. Entries에 넣어줄때 해당 데이터 주입하기 widget은 이전 포스터에서 말했..
앱에서 위젯으로 데이터를 보내줘야할 경우가 당연하게 생긴다. (그냥 하드코딩 하고싶지는 않자나?) 다음과 같은 방법을 통해서 데이터를 보내줄수 있다. 1. App Group 추가해주기 우리의 메인 앱의 Target으로 가게 되면 거기에서 Signing & Capabilityies에서 all 왼쪽에 있는 + Capability를 누르면 appGroups를 추가할수 있다. 해당 방법을 통해서 위젯과 앱 둘다 appgroups를 추가 하고 동일한 groupId로 설정해준다. app Groups란? 동일한 팀이 개발한 앱 사이의 공유 컨테이너를 액세스 가능하도록 하는 그룹을 생성하는것이다. 이를 통해 프로세스간의 통신을 할수 있도록 한다. $(TeamIdentifierPrefix).com.example.mygr..
위젯은 직접적인 데이터 변경을 알아차려도 이전포스트에서 말했듯, 스스로는 변경할수 없다. 이를 연동된 앱에서 명시적으로 알려줘야한다. WidgetCenter 위의 명시적으로 알려주기 위한 객체가 바로 WidgetCenter이다. 우선적으로 위젯 센터는 다음과 같은 프로퍼티를 가지고 있다. kind : String family : widget family configuration : intent configuration 옵셔널 kind는 이전에 설명했던, 고유아이디. family는 supportedFamily에 넣어주는 위젯의 크기를 알려주는 사이즈 configuration은 intent가 있으면 존재하는 configuration이다. 앱데이터 변경을 통해 위젯 변경하기 앱 내부의 데이터 변경을 timel..
Designated init()이란 지정 이니셜라이저이다. 우리가 class를 사용하면 모든 프로퍼티에 초기값을 할당해줘야 하고 초기화 할수있게 해준다. class SomeClass { var number: Int var name: String init(number: Int, name: String) { self.number = number self.name = name } } 하지만 이때 단 하나의 프로퍼티라도 초기화가 되지 않으면 에러를 발생시킨다. convenience init() 💡 convenience init은 왜쓰는가? 바로 init을 할때, 모든 프로퍼티에 초기값을 일일히 넣어주는 작업을 하지 않고, 초기값을 자동으로 넣어주기 위해서 사용한다. 따라서 convenience init은 기본적..
Apple Document에는 다음과 같이 스프라이트킷을 정의하고 있다. 하지만 게임을 만들기 위해서 라는 부분이 좀 많이 안와닿았는데, 다음과 같이 좀더 명확하게 설명해준다. 💡 SpriteKit은 도형을 그리거나, 글, 이미지 등을 2차원에서 다양한 애니메이션과 물리법칙을 적용하여 쉽게 게임과 같은 graphic-intensive app을 만들때 사용하는 프레임워크이다. Scene Spritekit에서 제공하는 컨텐츠를 보여주기 위해서는 스프라이트킷에서 제공하는 뷰에서 해당 컨텐츠를 그려야한다. 제공하는 뷰는 다음과 같다. SKView : 스프라이트킷의 컨텐츠만 보여줄때 사용하는 뷰 SKRender : Metal과 스프라이트킷 컨텐츠를 섞어서 보여줄때 사용하는 뷰 Metal이란? metal이란 app..
ceil(값) = 소수점 올림 floor(값) = 소수점 내림 trunc(값) = 소수점 버림 round(값) = 소수점 반올림 ceil(Int(someValue)!) round(Int(someValue)!) floor(Int(someValue)!) trunc(Int(someValue)!)
스위프트 공식문서를 참조하였습니다. 옵셔널이란? 옵셔널 선언 옵셔널 해제 명시적 해제 묵시적 해제 옵셔널 체이닝의 정의 옵셔널 체이닝의 선언 옵셔널이란? 먼저 옵셔널 체이닝을 이해하기 이전에 옵셔널이라는 타입을 이해해야 한다. 옵셔널이란, nil이 들어갈수 있는 변수를 의미하며, 옵셔널의 값은 nil혹은 nil이 아닌값만을 가질수 있다. 옵셔널 선언 var st:String? = "hi" 옵셔널을 선언하기 위해서는 타입선언 뒤에 ? 를 붙여서 옵셔널 타입을 주면 된다. 옵셔널 해제 옵셔널 타입은 연산을 지원해주지 않는다. 즉 다른 변수들과의 연산을 전혀 할수가 없다. 옵셔널 타입의 결과값은 항상 옵셔널 타입만을 알려주기 때문에 언래핑을 해주어서 사용해야 한다. 옵셔널 해제는 명시적 해제 , 묵시적 해제로..