일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 |
- archive error
- navigationbar
- 소셜로그인
- AppleLogin
- 하단 네비게이션바
- RxCocoa
- Business Manager
- testflight error
- 화면 가리기
- 로그출력
- 비공개 앱 배포
- Apple Enterprise
- CryptoSwift
- 로그 찍기
- failed: No such file or directory (2)
- 테이블뷰 밀어서 삭제
- codebase
- then
- 테이블 뷰
- iOS 광고달기
- 테이블뷰 셀 밀어서 삭제
- 아카이브 에러
- color 변경
- snapkit
- reactorkit
- MVVM
- 스토리보드 없이
- 백그라운드 진입시 화면
- RxSwift
- print vs dump
- Today
- Total
목록iOS/Swift (24)
ukSeung iOS
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bCjpY4/btsHIHyBP10/OpuQGLyp6aH5oIMVokvHjk/img.png)
안녕하세요 욱승입니다!오늘은 스토리보드 없이 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..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c1qtQr/btsA9VuyxB6/KNlKW8bsnfdHO812hGX4q0/img.png)
안녕하세요 욱승입니다!오늘은 오류 포스팅을 해볼까합니다!포스팅은 편의상 반말루 오류 메시지 해결 방안보아하니 Pod(라이브러리)쪽 오류인듯 보이더라.. 찾아보니 Xcode15에서 최근 들어 많이 보이는 오류로 Build Setting에 대한 오류임! 내가 해봤던 해결책은 개발자들이라면 다 해보았던 1. DerivedData 삭제2. 재부팅3. Podfile Update(업데이트) 혹은 deintegrate후 install(재설치)4. 해당 파일쪽 chmod 권한 수정 위에 4가지 방법은 해결책이 아니였고 찾아보기론 Xcode15부터 해당 옵션 Default값이 NO에서 YES로 변경 되었다고 들었음! 해당 옵션이 Yes로 되어있을탠데 No로 변경하면 해결됨! XCode내에서 스크립트를 사용하지 않는..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dYqEVH/btsxaLQKnI1/KJPeX2jdyCQynAJOwsueE1/img.png)
안녕하세염 욱승입니당 이번 포스팅에서는 앱에서 필수로 쓰이는 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..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dllRd7/btswkpoJCuk/3fkUq9mvnjhOjRwOd2z5I1/img.png)
안녕항셍용 욱승임다 시뮬레이터에 이어서 디바이스 모델명 가져오는 코드를 작성해보겠슴당 시뮬레이터, 실제 기기에서도 작동 되는 코드임! 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):..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/M3fZK/btsr61Sgd7Q/JORsI9jkbp6Gu9SHYE7ktK/img.png)
해당 함수를 사용하면 시뮬레이터의 모델명을 가져올수 있음 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..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cc2dxP/btskCrrmBdA/LykKEOK2nyDa2FrpWP9X5k/img.png)
안녕하세요 욱승임당 이번 포스팅에서는 사소한데 사소하기엔 시간이 좀 걸린 이슈에 대해 포스팅 해볼까 합니다 이슈 화면 이동 할때 상단에 SafeArea Background Color가 일시적으로 변경되는게 보이시나요? 결론부터 말해주면 문제점은 SafeArea의 색과 네비바의 색이 불일치 하기 때문에 저러코롬 이상하게 화면이동 되는 것! 임! 그래서 SafeArea Background Color를 .white로 변경해주믄 댐 이슈 해결 그 중 'SafeAreaBrush'라는 라이브러리를 사용하여 이슈를 해결했다. Reference [iOS/Swift] Safe Area를 색칠하는 방법 노치 디자인의 Safe Area를 색칠하는 여러 가지 방법 위의 이미지처럼 상단과 하단 Safe Area의 색을 다르게 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ddHpNB/btsheDBAqSd/FoBCkOZNUPK3JV4ukSksT1/img.png)
안녕하세요 욱승임다ㅎ 이번 포스팅에서는 기기간 핫스팟 연결을 구현 해보겠읍니당 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(..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/WQbRO/btsg9NQ5bae/E7m78Zsvg7ipVttKAt1Uxk/img.png)
안녕하세요 욱승임다 이번 포스팅에서는 RxSwift와 MVVM패턴을 활용한 애플 로그인을 포스팅 해보겠읍니다 ㅋ Capability 추가 해주지 않음 에러나요 컴파일 에러가 나는건 아니고 런타임 에러가 나더라구염 구현 결과 저저 userIdentifier값은 애플 아이디마다 고유한 값이라 바뀌지 않음! 그래서 로그인 할때마다 동일 값을 리턴받기 때문에 사용자를 식별할수 있음! 나머지 성, 이름, 이메일이 보이는걸 확인할 수 있당 두번째 캡쳐본에서 Hide My Email을 했다면 성, 이름, 이메일이 nil로 리턴됨 ! 만약 Hide My Email을 막고 싶다면 예제코드(RxSwift + MVVM) Model // // User.swift // SwiftPractice // // Created by u..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/EPfLh/btsgTipskur/Pcx0HYeMs9WZ4njhhHxBt1/img.png)
안녕하세요 욱승임다 ㅋ 좋은 주말보내고 계신가요? ㅎㅎ 이번포스팅에서는 UITableView Cell을 밀어서 삭제하는 동작을 구현해볼게요 예제 예제 코드 import Foundation import UIKit import SnapKit class SwipeToDeleteCellViewController: UIViewController, UIViewControllerAttribute { var navTitle: String? var lastContentOffset: CGFloat = 0.0 var tableViewArray: [Int] = [] lazy var tableView = UITableView().then { $0.delegate = self $0.dataSource = self $0.regis..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/EqsJW/btsgvAY5BvM/D0g6ExCG7tUKZ5GHplwqt1/img.gif)
안녕하세요 욱승입니다. 이번 포스팅에서는 스크롤뷰를 이용한 네비게이션 바를 올렸다 내렸다 하는 작업을 구현해볼게염 ㅋ 이게 무슨소리냐.. 하믄 인스타그램만 봐도 피드형식의 홈화면은 스크롤을 내리면 네비게이션바가 숨겨지고 / 스크롤을 올리면 네비게이션바가 나타나고 이러한 방식이 필요한 이유? 사용자 경험 개선: 스크롤 네비게이션바를 숨기면 사용자는 화면에 더 많은 콘텐츠를 볼 수 있습니다. 특히, 작은 화면 크기를 가진 모바일 장치에서 스크롤 네비게이션바를 숨기면 콘텐츠 영역이 더 커져 사용자가 더 많은 내용을 스크롤하고 탐색할 수 있습니다. 디자인 요소 제어: 스크롤 네비게이션바를 숨기면 앱 또는 웹 페이지의 디자인 요소를 더욱 강조할 수 있습니다. 스크롤 네비게이션바가 콘텐츠와 함께 계속 보이면 시각적..