일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 멋사
- 리액트
- 네트워크
- 멋쟁이사자처럼
- 컴퓨터그래픽스
- SwiftUI
- 운영체제
- uikit
- ReactorKit
- spritekit
- 문법
- widget
- 백준
- 알고리즘
- 후기
- 영남대
- c++
- 대외활동
- TCA
- composable architecture
- Swift
- 웹
- 스유
- swift concurrency
- 스위프트
- cs
- widgetkit
- 위젯킷
- Protocol
- dispatchqueue
- Today
- Total
목록전체 글 (198)
맛동산이
위젯에서 가장 중요한 3요소는 다음과 같다. Widget Configuration Provider EntryView Widget Configuration configuration과 관련된 속성값들 위젯 편집하기에 들어갔을때 생성되는 위젯추가 창, 혹은 위젯의 편집과 관련된 정보를 가진 객체가 바로 WidgetConfiguration이다. configuration 파라미터 kind 위젯의 identifier(아무거나 지정해주면 됨, 보편적으로 bundle id ) intent 유저가 구성할수 있는 속성 (static은 없음) provider 위젯의 뷰를 업데이트할 타이밍을 알려주는 객체 content 위젯에 보여줄 뷰 Configuration 종류 IntentConfigurationt예 ) to-do li..
위젯의 주요 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)!)
문제 [https://school.programmers.co.kr/learn/courses/30/lessons/12939] 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다. 해설 기본적으로 그냥 문자열과 배열을 다루는 문제인것 같다. func solution(_ s:String) -> String { var numbers = s.components(separatedBy: " ").map{ Int($0)! } numbers.sort() r..