본문 바로가기

전체 글

(22)
SwiftUI_Tutorial 간단 정리(3/3) - App design and layout & Interfacing with UIKit 앞에 뷰 구성 부분 이전 글: https://dev-doogie.tistory.com/24Working with UI controls.onAppear => ViewDidAppear.onDisappear => ViewDidDisappear같은 느낌인데 VC에서 사용하고 뭐 그런게 아니라 모든 뷰에 적용 가능 한듯 @Environment(\.editMode)@Environment에는 \.editMode라는 기본적으로 제공하는 프로퍼티가 있는데 이는 EditButton()을 추가하면 이 버튼과 자동으로 연결됨그리고 editMode프로퍼티는 wrappedValue가 .active인지 .inactive인지로 구별함  A뷰 안에 상위 뷰로 부터 주입되어야 하는 @Environment 프로퍼티를 사용하는 B뷰가 있다고 가정해볼 때A뷰에..
로아랑(LOARANG) 공지사항 [2024년 04월 28일]로아랑이 리뉴얼 되었어요!변경 내역 초월, 엘릭서, 상급 재련등 더욱 많은 정보가 추가되었어요.정보 추가에 따라 디자인이 리뉴얼 되었어요.검색 방식 변경으로 이 전 버전보다 더욱 빠른 속도로 검색이 가능해요.이전에 없던 도전 어비스 던전, 도전 가디언 토벌 정보도 홈에서 확인이 가능해요. [2023년 01월 18일]출시 이후 첫 업데이트가 진행되었습니다! 앞으로도 많은 이용 부탁드립니다!(로아랑 다운로드)변경 내역보유캐릭터를 기존 전투정보실에서 유저 정보를 검색해 가져오는 방식 대신 공식 API를 통해 가져오도록 수정해 더 빠르게 불러올 수 있도록 수정신규 클래스'슬레이어'의 클래스 이미지 표시를 표시할 수 있도록 수정전직을 하지 않은 캐릭터의 클래스 이미지 표시 할 수 있도록..
SwiftUI_Tutorial 간단 정리(2/3) - Drawing and animation 이전 글: https://dev-doogie.tistory.com/23다음 글: https://dev-doogie.tistory.com/26Drawing paths and shapes GeometryReader상위 뷰의 크기에 맞춰 하위 뷰를 조정하는 기능예를들어 여러 화면에 서 쓰이는 A뷰가 있다고 가정해보겠다그런데 A뷰를 구성하는 뷰들을 고정값들로 배치하게 된다고면 부모뷰의 크기와는 상관 없이 오로지 고정된 값으로만 구성이 되며다른 뷰 혹은 기기가 바뀌거나 회전 되었을 때, 너무 작음 혹은 크거나, 좌표가 벗어나버리는 일이 발생할 것이다그래서 GeometryReader { geometry in . . .}이 `Geomet..
SwiftUI_Tutorial 간단 정리(1/3) - SwiftUI essentials 이 글은 누군가에게 지식을 전달하기 위한 글 보다는 개인이 알아보기 편하게 정리한 글 입니다. 다음 글 : https://dev-doogie.tistory.com/24 SwiftUI_Tutorial에는 크게 네 가지 챕터가 있다 SwiftUI essentials, Drawing and animation, App design and layout 그리고 Framework integration 그리고 Framework integration 에는 UIKit과 연결하여 SwiftUI를 사용하는 방법 + watchOS, macOS에 관련된 내용들이 있는데나는 이 튜토리얼을 빠르게 공부 하고 TCA튜토리얼로 넘어가기, 더 나아가 현재 출시 되어 있는 어플을 SwiftUI로 전환하는 것이 목표이기 때문에 Framewo..
흔하디 흔한 TCA 기본 개념 정리 TCA의 기본 개념에 정리하기에 앞서- [참고자료] SwiftUI에서 MVVM 사용을 멈추자"라고 생각이 들었던 이유 TCA의 기본 개념에 정리하기에 앞서 왜 SwiftUI에서 MVVM이 필요 없는지에 대한 글이다 진짜 초 간단히 정리 하자면 이미 SwiftUI자체가 이미 MVVM의 구조를 내포하는데 왜 또 MVVM을 더하냐는 글이다 SwiftUI만으로도 MVVM수준의 아키텍처 문제는 해결되었으니 이제 더 상위 레이어의 아키텍처에 대해 고민해보아야 한다라는 글이다 MVVM은 뭔데?Model - View - ViewModel 의 대문자만 따온 패턴으로 주로 RxSwift와 자주 이용된 패턴이다. Data요청이 먼저냐 Binding이 먼저냐는 때에 따라 다르고 전체적인 로직은 아래와 같다 1. ViewMod..
로아랑 리펙토링 계획 https://apps.apple.com/kr/app/%EB%A1%9C%EC%95%84%EB%9E%91/id6444625201 ‎로아랑 ‎● 대표 캐릭터 & 즐겨찾기 설정 - 본인의 캐릭터와 자주 검색하는 캐릭터를 설정해 편리하게 캐릭터 정보를 확인할 수 있어요! ● 이벤트 정보 & 공지사항 - 메인 화면에서 바로 최신 이벤트 apps.apple.com 현재 앱스토어에 올라가 있는 내가 처음으로 출시 했던 프로젝트 이다 프로젝트 리펙토링 계획은 아래와 같다 1. cocoaPods -> spm 전환 맥북 업데이트, githubAction, 팟파일, 루비 관리 등등 코코아팟으로 관리 할 때 불편한 점이 여간 적지 않았다 그러던 중 회사 프로젝트를 spm으로 전환했는데 신경 쓰던 것들이 모두 줄었고 내 프로젝..
Combine 기본 사용법 정리 - Publisher import Combine class SomeObject { var vsalue: String = "" { didSet { print(vsalue) } } var asdfasdf: String = "" { didSet { print(asdfasdf) } } } let someObject = SomeObject() let publisher = ["울릉도", "동남쪽", "뱃길 따라 이백리"].publisher _ = publisher.assign(to: \SomeObject.asdfasdf, on: someObject) //위 아래 두 개 다 같은거 _ = publisher.assign(to: \.asdfasdf, on: someObject) 근데 publisher는 애초에 정해진 값..
class의 배열만들기(약한 참조 하는 배열, weak array) 개발을 하다보니 class의 배열을 만들 일이 생겼다 정확히는 ViewController(이하 VC)의 배열을 만들고 deinit될 때는 해당 배열에서 없어져야 했다 딱 생각나는 방법이 두 가지가 있었는데 1. 해당 VC가 deinit될 때 배열에서 remove해주기 2. 해당 VC가 deinit되야 하는'곳'(예를 들변 pop되는 곳) 에서 remove해주기 딱 봐도 2번같은 경우에는 메모리가 해제되어야 하는 모든 부분을 알고 대응하기 어렵기 때문에 1번의 방법으로 가기로 했는데 이게 왠걸...? 너무나 당연한 얘기지만 배열에 VC가 추가되면서 참조를 하고 있기에 deinit이 호출이 안된다 ㅋ 그래서 생각난게 '약한 참조를 하는 배열을 만들면 되지 않을까? 근데 그걸 어케하지;;' -> 구글링 htt..