[Swift] Storyboard없이 CodeBaseUI 코드 구현
·
iOS/Swift
안녕하세요 욱승입니다!오늘은 스토리보드 없이 CodebaseUI를 구현 해볼까 합니다!포스팅은 편의상 반말루 Swift의 UI는 두개로 나뉘는데 UIKit과 SwiftUI로 나뉘어요Storyboard는 UIKit으로 분류되는데요새는 Storyboard로 UI를 그리기도 하지만 CodeBase로만 UI를 그리는 경우도 있답니다.   CodeBaseUI 구현의 장단점장점1. 협업 및 유지보수가 용이2. 앱이 실행될때 Storyboard에 비해 무겁지 않음3. 앱이 커지면 커질수록 장점을 가지는 구현 방법(1번의 이유) 단점1. 러닝커브가 발생2. Storyboard와는 다르게 한눈에 볼수는 없다  그래서 어떻게 하냐..!? 1. 스토리보드 파일 삭제 2. 프로젝트 Build Setting > Info.pli..
[Swift] 앱 빌드 오류, failed: Operation not permitted (1)
·
iOS/Swift
안녕하세요 욱승입니다!오늘은 오류 포스팅을 해볼까합니다!포스팅은 편의상 반말루  오류 메시지 해결 방안보아하니 Pod(라이브러리)쪽 오류인듯 보이더라.. 찾아보니 Xcode15에서 최근 들어 많이 보이는 오류로 Build Setting에 대한 오류임! 내가 해봤던 해결책은 개발자들이라면 다 해보았던  1. DerivedData 삭제2. 재부팅3. Podfile Update(업데이트) 혹은 deintegrate후 install(재설치)4. 해당 파일쪽 chmod 권한 수정 위에 4가지 방법은 해결책이 아니였고 찾아보기론 Xcode15부터 해당 옵션 Default값이 NO에서 YES로 변경 되었다고 들었음! 해당 옵션이 Yes로 되어있을탠데 No로 변경하면 해결됨!  XCode내에서 스크립트를 사용하지 않는..
[iOS] 아이폰 검색(Spotlight), 앱과 다른이름이 검색되게 하기
·
iOS
안녕하세요 욱승임다 제목대로 이번 포스팅에서는 앱과 다른이름이 검색되게 하는 방법을 알아보겠읍니다 포스팅은 편의상 반말로! 🙇🏻‍♂️ 이게 무슨말이냐 하시는 분들도 계실탠데 App Display Name은 'TMAP'이지만 '티'를 검색해도 검색 결과에 나오는 걸 볼수있음 + 물론 TMAP으로 검색해도 앱 검색이 가능! 프로젝트의 info.plist에 Accessbility Bundle Name을 추가하면 검색이 가능하다! (아마 'TMAP'도 '티맵'으로 설정 해놓았을 것) 설정후 빌드하니! 결론 이게 생각보다 구글링해도 안나오길래 애플에도 문의 해봤지만 다른 방안을 제시했지 이 방안을 제시하진 않았음! 나중에 쓰일법하니까 알아두자 ㅋ Ref. [iOS] 아이폰 검색(spotlight)에 앱 이름과 다..
[Swift] RxSwift + MVVM, FaceID & TouchID authentication
·
iOS/Swift
안녕하세염 욱승입니당 이번 포스팅에서는 앱에서 필수로 쓰이는 FaceID 및 TouchID 인증을 알아보겠읍니다 포스팅은 편의상 반말루 ㅋ import import LocalAuthentication 해당 라이브러리는 Apple 내장 라이브러리라 Cocoapods이나 Packages에 추가할 필요 음슴 info.plist FaceID를 사용하는 기기면 Privacy - Face ID Usage Description를 추가해조야댐 구현(View) // // LocalAuthenticationViewController.swift // SwiftPractice // // Created by ukseung.dev on 2023/10/05. // import Foundation import UIKit import..
[Swift] Get DeviceModel Name, 디바이스 모델명 가져오기
·
iOS/Swift
안녕항셍용 욱승임다 시뮬레이터에 이어서 디바이스 모델명 가져오는 코드를 작성해보겠슴당 시뮬레이터, 실제 기기에서도 작동 되는 코드임! 2023년 9월 기준 아이폰 15 시리즈가 나왔습니다. width와 height값은 공식 홈페이지에 있으니 case로 추가해 디바이스 모델명을 가져올수 있습니다 함수 func getDeviceModelName() -> String { let screenWidth = UIScreen.main.bounds.size.width let screenHeight = UIScreen.main.bounds.size.height switch (screenWidth, screenHeight) { case (320, 480): return "iPhone 3GS" case (320, 480):..
[iOS] 비공개 앱 배포, Unlisted App Distribution
·
iOS
안녕하세요 욱승임다 프로젝트 마무리라 미리 심사에 올려놨는데 또 리젝 당했음다 한번에 되는게 없지 ㅋ 맞아요.. 사내 전용 앱이라 비공개 배포를 해야합늬당 전반적인 설명을 먼저드리자면 해당 리젝사유는 사내 전용 앱이라 앱을 앱스토어에 게시 할 수없습니당 왜냐하면 앱스토어는 공개적으로 모든 사용자들이 사용할 수 있어야 하기때문에 리젝 사유가 되는데 그러면 어떻게 하는게 좋냐... 비공개 배포로 배포 해버리면 됩니당 비공개 배포(Unlisted App Distribution)란? Ref. https://developer.apple.com/kr/support/unlisted-app-distribution/ 등록되지 않은 앱 배포 - 지원 - Apple Developer 포럼 Apple 엔지니어 및 다른 개발자..
[Xcode] Archive, Command PhaseScriptExecution failed with a nonzero exit code
·
Xcode
안녕하세요 욱승입니다. 오랜만에 새 프로젝트를 testflight에 올릴려고 Archive를 하는 도중 에러를 만났읍니다 ㅋ 이거 때문에 야근하는건 안 비밀 Pod의 경로를 찾지 못해 발생하는 에러 해결 방법 어뜨케? 일케 ㅋ source="$(readlink -f "${source}")" 결론 해당 오류는 자주 발생하지만 조금 포괄적인 오류라 겪어보지 않으면 쉽게 해결하기 힘들 것 같당 오류의 자세한 내용을 보고 대응하면 해결하기 수월 할 듯 !
[Swift] 시뮬레이터 디바이스 모델명 가져오기 / Get Simulator IPhone Model Name
·
iOS/Swift
해당 함수를 사용하면 시뮬레이터의 모델명을 가져올수 있음 func deviceModelName() -> String? { var modelName = ProcessInfo.processInfo.environment["SIMULATOR_DEVICE_NAME"] if modelName!.count > 0 { return modelName } let device = UIDevice.current let selName = "_\("deviceInfo")ForKey:" let selector = NSSelectorFromString(selName) if device.responds(to: selector) { modelName = String(describing: device.perform(selector, wi..
[Swift] 화면이동시 SafeArea Background Color이 변경 되는 이슈
·
iOS/Swift
안녕하세요 욱승임당 이번 포스팅에서는 사소한데 사소하기엔 시간이 좀 걸린 이슈에 대해 포스팅 해볼까 합니다 이슈 화면 이동 할때 상단에 SafeArea Background Color가 일시적으로 변경되는게 보이시나요? 결론부터 말해주면 문제점은 SafeArea의 색과 네비바의 색이 불일치 하기 때문에 저러코롬 이상하게 화면이동 되는 것! 임! 그래서 SafeArea Background Color를 .white로 변경해주믄 댐 이슈 해결 그 중 'SafeAreaBrush'라는 라이브러리를 사용하여 이슈를 해결했다. Reference [iOS/Swift] Safe Area를 색칠하는 방법 노치 디자인의 Safe Area를 색칠하는 여러 가지 방법 위의 이미지처럼 상단과 하단 Safe Area의 색을 다르게 ..
[Swift] CryptoSwift, 라이브러리를 통한 암복호화
·
iOS/Library
해당 포스팅은 MVVM패턴 + RxSwift로 이루어진 예제입니다. 안녕하세요 욱승임당 이번 포스팅에서는 라이브러리를 통한 암복호화를 해볼건데요 앱에서 따로 암복호화 알고리즘을 구현하지 않고 라이브러리를 사용해서 간단히 암복화를 할 수 있다고 하더라구여 이 라이브러리도 뱅크샐러드에서 사용중이라고 합니다! 그럼 가보쟈고 카카오 떡상 가즈아!!! GitHub GitHub - krzyzanowskim/CryptoSwift: CryptoSwift is a growing collection of standard and secure cryptographic algorithms implemen CryptoSwift is a growing collection of standard and secure cryptograp..
[Swift] Atributika, HTML 코드를 Swift 코드에 녹이기
·
iOS/Library
안녕하세요 욱승입니당 ㅋ 이번 포스팅에서는 Atributika 외부 라이브러리를 사용해서 HTML 소스코드를 Swift 소스코드에 적용시켜볼게요! 이 라이브러리는 뱅크샐러드가 사용중이라고 합니다! 간단한 예제를 통해 사용해볼까 합니다! 그럼 드가쟈 Podfile pod 'Atributika' # Swift 언어로 작성된 iOS 및 macOS 앱에서 텍스트 스타일링 및 강조 효과를 적용하는 데 사용되는 라이브러리 import import Atributika GitHub Atributika GitHub - psharanda/Atributika: Convert text with HTML tags, links, hashtags, mentions into NSAttributedString. Make them cl..
[Swift] Hotspot Configuration, 핫스팟 연결
·
iOS/Swift
안녕하세요 욱승임다ㅎ 이번 포스팅에서는 기기간 핫스팟 연결을 구현 해보겠읍니당 Capability 작동 방식 소스코드 View // // HotspotConfigurationViewController.swift // SwiftPractice // // Created by ukseung.dev on 2023/05/22. // import Foundation import UIKit import RxSwift final class HotspotConfigurationViewController: UIViewController, UIViewControllerAttribute { let viewModel = HotspotConfigurationViewModel() let disposeBag = DisposeBag(..
욱승
ukSeung iOS