전체 글
KingFisher에서 SVG 이미지 다운로드하는 방법
Feat 킹피셔를 이용한 이미지 다운로드 함수 작성 URL 경로의 마지막 확장자에 SVG가 있을 경우 SVG를 다운로드 하는 함수 SVGKit 설치 - https://github.com/SVGKit/SVGKit SVGProcessor 작성 import SVGKit import Kingfisher extension UIImageView { func kfSetImage(with urlString: String?) { if urlString?.hasSuffix(".svg") == true { return self.kfSetSVGImage(with: urlString) } if let imageUrl = urlString.map({ App.config.WebResourceURL + $0 })?.url { sel..
SwiftUI 상에서 HTML 출력과 Link, CSS 적용하는 방법
Feature SwfitUI에서 HTML을 출력한다. HTML - 링크 클릭 시, 활성화된 링크를 가져오거나, 핸들러를 제공한다. HTML에 CSS를 적용한다. import SwiftUI import WebKit ///참고 - https://stackoverflow.com/a/59018581/3374327 struct SUIWebView: UIViewRepresentable { @ObservedObject var viewModel: SUIWebViewModel let url: URL? let html: String? let css: String? func makeUIView(context: UIViewRepresentableContext) -> WKWebView { var webView: WKWebVie..
multi-line 문구 localizable.strings 적용 방법
Localizable.Strings에 아래와 같이 작성 후 "Hi, I would like to share the following feedback: " = "Hallo, ich möchte folgendes Feedback geben: "; 소스상 에서 아래와 같이 사용이 가능하다. let localizedMessage = NSLocalizedString(""" Hi, I would like to share the following feedback: """, comment: "")
iOS 시뮬레이터에서 URLScheme을 빠르게 여는 방법
iOS 시뮬레이터에서 사용자 정의 URLSceme을 빠르게 여는 방법 일반적으로는 시뮬레이터 Safari의 주소창에 URLScheme을 입력하는 방법을 사용하는데, 매번 복사, 붙여넣기를 사용하여 불편하다. CLI - Terminal을 이용한 방법 xcrun은 명령줄에서 Xcode 내부의 모든 도구를 실행가능한데, 시뮬레이터를 제어할 때는 simctl을 사용한다. 시뮬레이터에서 커스텀 URL Scheme(또는 웹사이트)을 여는 방법은, 1. 시뮬레이터에서 앱을 실행한 후, 2. Terminal.app을 엽니다(/Applications/Utilities에 위치). 3. 다음 명령을 입력하고 ⏎ Return 키를 누르십시오. xcrun simctl openurl booted 예시 xcrun simctl op..
rbenv 환경에서 cocoapods 최신 버전 설치 방법
rbenv 환경에서 cocoapods의 최신 안정적(stable) 버전을 설치하는 방법 rbenv 설정은 그대로 둔다. pod --version 명령으로 현재 버전 확인 > pod --version > 1.10.1 sudo gem install cocoapods --pre (최신 안정버전 설치) > 1.11.3 > ... > Successfully installed cocoapods-1.11.3 > ... pod --version 실행 > pod --version > 1.10.1 !! 최신 버전이 나오지 않을 경우 rbenv -rehash 실행 > rbenv -rehash > ... > pod --version > 1.11.3
Failed to uninstall gitlab-runner: remove /Library/LaunchDaemons/gitlab-runner.plist: no such file or directory gitlab-runner.plist
Given CI Build를 위해 GitLab-Runner를 아래의 과정으로 직접 설치한 경우에 발행하는 현상으로 보입니다. sudo curl --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-arm64" sudo chmod +x /usr/local/bin/gitlab-runner gitlab-runner install When gitlab-runner를 삭제가 필요할 때의 절차는 아래 순서대로 진행합니다. #1 - 모든 runner 삭제 $gitlab-runner unregister --all-runners #2 - gitlab-r..
iOS 메모리 사용량 파헤치기
앱 메모리 사용량 줄이기 앱 메모리 사용량을 줄여야 하는 이유: 사용자가 더 나은 경험을 할 수 있다는 것입니다. 앱 실행 속도가 빨라질 뿐만 아니라 시스템이 더 잘 수행될 것입니다. 앱이 메모리에 더 오래 유지됩니다. 다른 앱은 메모리에 더 오래 남아 있습니다. 거의 모든 경우에 안 하는 것보다 더 좋습니다. 클린 & 더티 페이지 (Clean & Dirty pages) 힙에 여러 개체를 보유할 수 있는 페이지에 제공된 메모리와 일부 개체는 여러 페이지에 걸쳐 있을 수 있습니다. 각 페이지는 일반적으로 16KB이며 클린하거나 더티해질 수 있습니다. 앱의 메모리 사용량은 페이지 수에 페이지 크기를 곱한 것입니다. 예시: 가득차지 않은 4페이지로 메모리 매핑된 50KB인 JPEG가 있는 경우 이것의 좋은 예..
UserDefaults 모든 항목 출력, 경로, 리셋
UserDefaults 목록 확인을 위한 코드 해당 경로의 plist 오픈 var path: [AnyObject] = NSSearchPathForDirectoriesInDomains(.libraryDirectory, .userDomainMask, true) as [AnyObject] let folder: String = path[0] as! String NSLog("%@/Preferences", folder) 소스 상에서 런타임 시에 UserDefaults를 프린트로 찍는 방법 print(UserDefaults.standard.dictionaryRepresentation()) UserDefaults Reset 필요 시 extension UserDefaults { static func resetDefaul..
Advances in Collection View Layout
iOS는 기본적으로 'UICollectionView' 흐름 레이아웃과 함께 제공되며, 이는 간단한 경우에 유용합니다. 그러나 사용자 정의 레이아웃을 수행하는 것은 매우 복잡하고 상용구 코드가 필요하고 성능 등에 대해 생각해야 합니다. iOS 13 및 macOS 10.15의 새로운 기능: Compositional Layout Compositional Layout은 구성 가능하고 유연하며 빠릅니다. 작은 레이아웃 그룹(라인 기반, 즉 플로우 레이아웃 사용)을 가져와 함께 더 큰 조각으로 구성하여 작동합니다. iOS, tvOS 및 macOS에서 사용 가능(동일한 API): UI/NSCollectionViewCompositionalLayout ⭢ NSCollectionLayoutSection ⭢ NSCollec..