본문 바로가기

전체 글

(67)
SwiftUI - 이미지 줌 기능을 달아보자 요즘 커머스 관련한 앱을 보다보면, 이미지를 확대해서 보는 기능이 있다 SwiftUI 상에 있는 MagnificationGesture 를 이용해 구현 했을려 했으나, 필자가 원하는 방식대로 적용하기 어려워 ViewController 의 힘을 빌렸다. ViewPager 상에서 Zoom 을 이용해 확대 기능 + 더블탭을 이용해 다시 원상태로 되돌릴수 있도록 만들었다. 1. ImageZoomRepresentable import Foundation import SwiftUI import Combine struct ImageZoomRepresentable: UIViewControllerRepresentable { var content: () -> Content init(@ViewBuilder content: @e..
iOS - 프로젝트에 SPM 을 달아보자 종속성 관리를 위한 도구인 SPM 을 소개 하고자합니다. 기존에 Cocoapod(3st party) 으로 설치했던 라이브러리를 SPM(1st party) Xcode 내장 기능을 이용해 구성 했습니다. 공통적으로 사용 가능한 함수, 및 View 들의 대해 라이브러리를 발행하여 사용하는 방법입니다. 1. Package 생성 1-1. new → package 클릭 1-2. 해당 package를 git에 push 한다. (push 과정 생략) 1-3. package.swift 편집어떻게 보면 라이브러리 자체 생성은 가능하다, 해당 git 의 주소를 spm 상에 붙이면 연동은 끝이다. 다만, 해당 package 의 옵션 설정이 중요하다. import PackageDescription let package = Pa..
Xcode - Google Sheet 에서 다국어 내용 가져오기 글로벌 프로젝트를 진행 하다보면 다국어 관련한 내용을 추가할일이 자주 있습니다. 그러다보면 Android, iOS 파트 단에서 다국어 관련한 내용이 잘 정리가 안되어 있을때가 있습니다. 공통으로 관리 하기위해 Google Sheet 를 이용하고 있는데 이번 포스팅은 Xcode 상에서 Build 를 진행할때 Run Script 를 이용하여 시트에 있는 내용을 긁어와 프로젝트에 적용 하고자 합니다. 시트에서 내용을 긁어오는 내용은 Python 으로 진행 했습니다. 1. 설정 (python) 1-1. Terminal → brew install python3 or arch -arm brew install python3 (M1 일경우) 입력 1-2. 인텔에서는 기본 제공하지만 설치 필요시 다음과 같이 입력한다. ..
Swift - async await Swift 에는 여러 가지의 비동기 처리 방법이 있는데 대표적으로는 DispatchQueue, CompletionHandler, RxSwift, Combine 등이 있다. 지난 WWDC 2021 에서 Async Await 를 발표하였다 기존까지 RxSwift, Combine 이용하고 있어서 늦게 학습 하였지만 상당히 축소되고 알아보기도 쉬워 끄적끄적 해본다.. Async Await 를 본격적으로 알아보기 전에, 현재 어떻게 비동기 처리를 하고 있었는지 알아보도록 하자. func processImageData1(completionBlock: (_ result: Image) -> Void) { loadWebResource("dataprofile.txt") { dataResource in loadWebReso..
SwiftUI - List Hide Indicator 최근 iOS16 버전이 업데이트 되면서 View에 대한 많은 변화가 일어나고 있습니다. ForEach - View 만들어진 이어진 리스트가 아닌 List - View 로 만들어진 리스트 상에서 iOS16 버전 이하에서 먹질않는 이슈가 발생하여 분기 처리를 진행 했었습니다. 현재 예시로 적용한 소스는 다음과 같다. * 실제 다음과 같이 적용하면 item 중복에 대한 문제가 발생할수 있음으로 indicator 관련 내용만 보면 된다. import SwiftUI struct ContentView: View { let item = ["a", "b", "c", "d", "e","a", "b", "c", "d", "e","a", "b", "c", "d", "e","a", "b", "c", "d", "e","a", ..
SwiftUI - TextView Attribute 회사일로 지쳐 오랜만에 글을 써보네요.. 이어 붙여져있는 Text 에 대해 각각의 색상 변경과 클릭이벤트를 주고 싶었으나 다음과 같이 반환값이 맞춰지지 않아 Text 끼리 색상 및 옵션 변경은 가능하나, 클릭이벤트를 줄수 없습니다. 그래서 Attribute 를 이용해서 만들고자 합니다 (대부분의 Attribute는 링크를 이용해 웹페이지를 열곤 하는데 저는 다른 작업이 하고 싶어 이런식으로 만듭니다) 1. UIViewRepresentable 결국은 UIKit의 힘을 빌려야 하기에 UIViewRepresentable 를 이용하고, 클릭했을때 URL 값을 얻기 위해 Coordinator 를 이용합니다. 전체 글꼴의 대한 attribute를 처리후 배열로 전달받았던 attribute 를 처리 하기 위한 텍스트..
Swift - Snapkit 최근에 SwiftUI 프로젝트를 진행 하다보니 UIKit 에 대해 소홀해졌다.. Snapkit 에 대해 겉핥기로 알고 있었기에 이번 기회에 다시 Snapkit 을 공부 해보도록 하자. * 최대한 하나씩 하나씩 설명할려고 하는데 중복적인 내용은 제외 하겠습니다 https://github.com/SnapKit/SnapKit GitHub - SnapKit/SnapKit: A Swift Autolayout DSL for iOS & OS X A Swift Autolayout DSL for iOS & OS X. Contribute to SnapKit/SnapKit development by creating an account on GitHub. github.com pod 'SnapKit' 1. View import..
SwiftUI - SNS 공유하기 (Facebook, Twitter, WhatsApp, Viber) 앱 프로젝트를 진행하다보면, 특정 문자에 대해 SNS 로 공유하고자 하는 기능이 필요할때가 있다. 대표적으로 국내, 해외에서 사용하는 (Facebook, Twitter, Whatsapp, Viber) 4가지를 적용할려고 한다. 해당 예제는 SwiftUI 로 구현했지만 충분히 UIKit 에서도 적용이 가능한 이야기 이다. 1. Whatsapp & Twitter & Viber 1-1. 다음과 같이 스키마를 info.plist 에 추가한다 LSApplicationQueriesSchemes whatsapp viber twitter 1-2. 해당 소스에 아래의 URL 만 추가해주면 끝이다. Whatsapp 앱스토어 URL : https://apps.apple.com/kr/app/whatsapp-messenger/..