728x90

분류 전체보기 298

TCA(6) : WebView

안녕하세요. 이번에는 TCA를 활용하여 WebView를 만들어볼게요. (TCA 0.54.0 기준으로 작성했으며, 전체 코드는 여기를 봐주세요!) Reducer, Scope, TaskResult 등 지금까지 TCA에 대해서 간단하게 알아봤는데요. 지금까지 공부한 것을 활용하면 자식 WebView를 만들 수 있습니다!!ㅎㅎ [참고] TCA로 WebView 만들면 뭐가 좋아? UIKit 기반의 WebKit의 이벤트를 SwiftUI로 던져주거나, 반대로 SwiftUI 이벤트를 WebKit으로 던져주기 쉽습니다. 이전 글에서 다 다뤄봤던 내용이기 때문에 자세하게 설명은 생략하고 WebView, WebViewReducer 코드 먼저 보여드릴게요. (좀 길어요..;;) 아직까진 SwiftUI 용 WebView가 따로..

SwiftUI 2023.07.28

[Unity] Debug.Log 로그가 콘솔.app에서 안보일 때

안녕하세요. Unity에서 Debug.Log로 로그를 찍어놓고 iOS 빌드를 했을 때, 콘솔.app에서 로그가 안보이신다면 Unity 빌드 옵션 중에 Development Build가 체크 해제되어 있는지 확인해보세요. 이게 정확한 해결방법인진 모르겠으나, 제 경우엔 Development Build 옵션을 끄니까 콘솔.app에서 로그가 잘 찍히더라구요. 혹시 Development Build 옵션을 꺼도 로그가 안 찍힌다면, Xcode에서 실행 중인 빌드를 종료하고 앱을 직접 실행시켜 보세요ㅎㅎ 이번 글은 여기서 마무리.

TroubleShooting 2023.07.25

웹뷰에서 원하는 타입의 파일만 첨부하는 방법

안녕하세요. 오늘도 즐거운(?) 웹뷰 얘기입니다.. HTML에서 input 태그를 사용해서 파일 첨부를 하게 되면, iOS 웹뷰에서 자동으로 아래와 같은 팝업을 보여줍니다. 근데, 난 사진만 첨부하고 싶어!! 라고 하는 경우엔 어떻게 해야 할까요? 웹 내에서 첨부된 파일의 확장자를 보고 필터링해 줄 수도 있지만, accept라는 속성을 사용하면 사용자가 사진만 첨부하게끔 제한시킬 수 있습니다. 동시에 웹뷰 팝업에서는 'Take Photo or Video' 라는 문구가 'Take Photo' 라고 바뀌게 됩니다. 만약 이미지 말고 txt 파일만 받고 싶어!! 하는 경우엔 accept에 .txt 확장자만 넣어주면 되겠죠?? 이 경우엔 웹뷰에서 팝업이 뜨지 않고 바로 '파일' 앱이 실행되고 '파일' 앱 내에서..

기타 2023.07.23

Apple 기기별 os 최대 지원 버전 볼 수 있는 사이트

안녕하세요. 업무에 도움이 될 것 같은 사이트를 하나 발견했습니다. https://iosref.com/ios iOS Ref Quick reference tables, tools, and links for iOS developers. iOS Ref has iOS compatibility tables, a beautiful Swift cheatsheet, a hex code to UIColor converter, device screen resolution tables, and more. iosref.com 아이폰 기기별로 베타 버전 포함해서 iOS 최대 지원 버전을 알 수 있는 사이트예요. 아이폰 뿐만 아니라 iPad, 애플워치, Apple TV의 os 최대 지원 버전 같은 것도 알 수 있어서 요즘 애용하..

기타 2023.07.20

TCA(5) : 부모-자식 간 이벤트 전달

안녕하세요. 이번에는 TCA를 활용하여 부모 Reducer와 자식 Reducer 간에 이벤트 전달하는 방법에 대해서 알아볼게요. (TCA 0.54.0 기준으로 작성했으며, 전체 코드는 여기를 봐주세요!) # 부모-자식 간 이벤트 전달하는 방법 부모 Reducer가 자식 Reducer에게 또는 자식 Reducer가 부모 Reducer에게 이벤트를 전달하는 방법은 개념만 알고 있으면 크게 어렵지 않습니다. (물론 Notification을 쓰지 않구요!) 부모 Reducer에서 Scope를 사용해서 자식 Reducer를 정의한 것 기억하시나요?? [참고] Scope란? Scope에 대해 정리한 글이 있으니 먼저 보고 오시면 쉽게 이해가 되실 거예요. 부모 Action 안에는 자식 Action도 포함되어 있어요..

SwiftUI 2023.07.20

Bundle 통째로 복사하기

안녕하세요. cp 명령어로 bundle을 통째로 복사해서 새로운 폴더 안에 넣으려고 했는데.. bundle 안에 있는 파일들만 복사가 되더라구요.. cp -rf Settings.bundle ./new ㅠㅠ.. 내가 원한건 이게 아닌데..;; # 해결방법 첫번째 방법은 cp 명령어를 사용하기 전에 타겟 폴더를 미리 만들어두면 두는 것입니다. (이미 존재하고 있는 폴더 안에 복사해서 넣으면 bundle 통째로 들어갑니다.) 오홓..ㅎㅎ 두번째 방법은 rsync 명령어를 사용하는 것입니다. rsync 명령어를 사용하면 타겟 폴더가 없어도 알아서 폴더를 만든 후에 bundle 통째로 넣어줍니다. rsync -a Settings.bundle ./new # 요약 - cp 명령어를 사용해서 A 폴더를 통째로 폴더 B..

기타 2023.07.14

TCA(4) : Scope

안녕하세요. 이번에는 TCA의 Scope에 대해서 알아볼게요. (TCA 0.54.0 기준으로 작성했으며, 전체 코드는 여기를 봐주세요!) # Scope? Scope를 사용해서 부모 Reducer에 자식 Reducer를 포함(선언? 정의?)시킬 수 있습니다. (Scope로 A(부모) Reducer와 B(자식) Reducer를 연결해 준다고 이해하면 될 것 같아요.) Reducer에서의 부모-자식 관계는 여러 가지가 될 수 있는데요. 큰 Reducer를 작은 Reducer로 쪼개는 것도 부모-자식 관계가 될 수 있고, 뷰 계층에서 부모 뷰의 Reducer와 자식 뷰의 Reducer도 부모-자식 관계가 될 수 있어요. # TCA에서의 부모-자식 관계 특징 부모-자식 관계를 설정했을 때의 가장 큰 특징은 2가..

SwiftUI 2023.07.12

맥북에서 LoC 계산

안녕하세요. 혹시 LoC가 뭔지 아시나요?? 전 오늘 처음 알게 된 용어인데 Lines of Code, 즉 코드가 몇 줄인 지를 의미하는 용어라고 합니다. cloc 라는 모듈을 사용하면 맥북에서 파일 또는 폴더 단위로 여러 수치들(언어별로 파일이 몇 개인지, 빈 줄이 몇 개인지 등)을 쉽게 알 수 있습니다. brew로 설치해 주고요. brew install cloc 원하는 파일 또는 폴더 위치로 이동해서 cloc 명령어를 호출해 주면 됩니다. cloc . 언어별로 파일을 분류하고 분류한 파일이 몇 개인지, 빈 줄이 몇 줄인 지, 주석이 몇 줄인지, 코드가 몇 줄인 지를 표로 보여줘서 되게 좋더라구요. cloc 명령어에 옵션을 넣어서 추가 필드를 넣거나 필요 없는 필드를 뺄 수도 있습니다. 이번 글은 여..

기타 2023.07.11

iOS 16.4에서 WebView Inspector 사용하기

안녕하세요. 저는 모바일 웹뷰 기능 개발할 때, WebView Inspector 기능을 자주 사용합니다. 잘 사용하던 중에 어느 순간부터 No Inspectable Applications 라고 뜨더라구요.. 요거 해결방법을 찾았습니다ㅎㅎ 찾아보니, WebKit에서 iOS 16.4 이후부터 WebView Inspector를 사용할지 말지에 대해 사용자가 옵션 설정을 하도록 바뀌었습니다. 옵션의 이름은 isInspectable 이고, default 값은 false 입니다. 즉, 아무 설정을 하지 않은 WKWebView는 WebView Inspector를 사용할 수 없다는 것이죠. 아래처럼 isInspectable를 true로 설정해 주면, WebView Inspector를 쓸 수 있게 됩니다ㅎㅎ (isIns..

iOS 2023.07.08

레고 키캡 제작

재미삼아 레고 키캡을 만들어봤습니다. 2x2 정품 레고와 안쓰는 키캡을 활용해봤어요. 레고를 뒤집으면 큰 구멍(원기둥?)이 하나 있는데요, 여기에 키캡 스템을 쑤셔넣을 예정입니다ㅋㅋ 스템을 넣기 전에 원기둥 두께(?)를 칼로 다듬어서 얇게 만들어줬어요. 다듬지 않으면 저 두께 때문에 스위치에 걸리게 됩니다. 그 다음 안쓰는 키캡에서 스템을 추출하고 잘 다듬어서 레고 뒤쪽 구멍에 순접으로 붙여주면 끝납니다. 레고에 스템 이식할 때 레고가 삐뚤어지지 않았는지, 다른 키캡하고 높이가 일정한지 잘 보면서 붙이는 것이 포인트 입니다ㅎㅎ 이번 글은 여기서 마무리.

취미 2023.07.08