일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ui
- TableView
- Android
- Apple
- UITableView
- modal
- 어플리케이션
- Xcode
- library
- charts
- Python
- 개발
- ios
- 개발자
- UIButton
- PyQt
- Chart
- cocoapods
- UIKit
- androidstudio
- PyQt5
- alamofire
- 라이브러리
- 그래프
- Swift
- Chrats
- button
- kotlin
- Storyboard
- graph
- Today
- Total
목록iOS Dev (133)
Jiwift
아는 게 없어서 찾아본 내용을 정리하기 위해 작성합니다. 틀리거나, 새로 추가해야 할 내용이 있으면 댓글로 알려주시면 감사하겠습니다. 2023년 12월 24일 기준 글입니다. Upcoming third-party SDK requirements - Support - Apple Developer Upcoming third-party SDK requirements - Support - Apple Developer Feedback Assistant Submit feedback, report bugs, and request enhancements to APIs and developer tools. Send us feedback developer.apple.com Privacy Manifest와 함께 서명을 추가해..
아는 게 없어서 찾아본 내용을 정리하기 위해 작성합니다. 틀리거나, 새로 추가해야 할 내용이 있으면 댓글로 알려주시면 감사하겠습니다. 2023년 12월 24일 기준 글입니다. [iOS/Swift] Privacy Manifest Describing use of required reason API Describing use of required reason API | Apple Developer Documentation Describing use of required reason API | Apple Developer Documentation Ensure your use of covered API is consistent with policy. developer.apple.com 이것은 무엇인가.. Priv..
아는 게 없어서 찾아본 내용을 정리하기 위해 작성합니다. 틀리거나, 새로 추가해야 할 내용이 있으면 댓글로 알려주시면 감사하겠습니다. 2023년 12월 24일 기준 글입니다. Alamofire 깃 허브 이슈를 보던 중에 Privacy Manifest라는 것을 보았다.. 이게 뭘까 뭔지 몰라도 귀찮고 어떻게 보면 큰 일일수도 있을 것 같은 녀석이다.. Get started with privacy manifests - WWDC23 - Videos - Apple Developer Get started with privacy manifests - WWDC23 - Videos - Apple Developer Meet privacy manifests: a new tool that helps you accuratel..
iOS 16.4 이상 부터는 WebKit에서 로그를 확인하려면 옵션을 변경해야합니다. if #available(iOS 16.4, *) { self.webkit.isInspectable = true } 원하는 웹킷에 해당 코드를 적용하면 Safari를 통한 로그 확인이 가능해집니다.
iOS 프로젝트를 개발하면서 웹킷에서 정적웹이라도 보여야하는 경우가 있습니다. 상황마다 다를 수 있겠지만.. 쉽게 말하면 웹 서버 없이 HTML 파일을 가지고 웹킷에서 바로 사용 가능한 경우에 쓰입니다. 우선 웹을 띄운다는 소리는 웹의 구성 파일들이 있을 것입니다. 저는 web이라는 폴더 안에 폰트, 이미지, index 등을 넣어두었습니다. 이제 이 폴더를 iOS 프로젝트로 옮겨야합니다. - Copy items if needed - Create folder references ("Create groups"는 하면 안됩니다.) - Add to targets 위의 옵션으로 폴더를 가지고 옵니다. . └── TestEx/ └── TestEx/ ├── web/ │ ├── index.html │ ├── imag..
UITextField의 글자수를 제한하고 개수를 표시하기 위한 로직 작성 20 자리를 기준으로 작성한 코드 self.nameTextField.delegate = self 글자수를 세기 위한 Textfield의 delegate를 설정 extension ViewController: UITextFieldDelegate { func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { // 기존 글씨 + 입력된 글씨 = text길이 guard let text = textField.text else { return false } let newLength..
이번에는 코드를 이용해서 UIButton을 만들어 보도록 하겠습니다. 사실 매우 간단하지만, 처음에는 왜 사용하는지 모를 수도 있을 것 같긴 합니다. 제가 사용하는 이유는 버튼 색상, 폰트와 같이 공통적으로 많이 사용되는 버튼을 Class로 만들어서 관리하고 있습니다. 이렇게 Class로 버튼을 만들면 변경이 생길 경우 유지보수하는데 좋다는 점이 있습니다. 예시는 많은 내용을 담지는 않겠습니다. 기본적인 방법을 익히시고 프로젝트에 맞는 버튼을 만들어보세요. // 버튼 class PrimaryButton: UIButton { // 코드를 통해 인스턴스를 생성할 때 사용되는 이니셜라이저 override init(frame: CGRect) { super.init(frame: frame) self.commonI..
이번에는 iOS에서 주소 검색 기능을 구현하도록 하겠습니다. 무료 사용을 위해서 다음(카카오)에서 제공해 주는 API를 사용하도록 하겠습니다. [Open API] 카카오(다음) 주소 검색 API 사용 (tistory.com) [Open API] 카카오(다음) 주소 검색 API 사용 서비스에서 주소 검색이 필요한 경우에 사용하기 좋은 무료 API를 소개합니다. 다음에서 제공해 주는 API를 사용하면 쉽게 웹과 앱에서 주소 검색 기능을 구현할 수 있습니다. Key를 발급받을 필요 jiwift.tistory.com 우선 위에 글을 통해서 다음 주소 검색 API를 사용하기 위한 웹을 준비합니다. 위 글에는 iOS에서 사용하기 위한 다음 주소 검색 웹 코드와 적용법이 있습니다. // 네이티브 앱 코드 호출 let..
급하게 작성하는 글... 불과 몇 시간 전에 [iOS/Swift] 색상 정의하고 관리하기 Assets, Enum, Extension (tistory.com) [iOS/Swift] 색상 정의하고 관리하기 Assets, Enum, Extension 앱 개발을 하다 보면 색상을 매번 적용할 수 없기 때문에 정의를 해서 사용하는 게 좋습니다. 제일 기본적인 방법으로는 다양하게 있습니다. 코드로 할 수 있고, Asset을 통해서도 가능합니다. 한 jiwift.tistory.com 위 글에서는 애셋과 extension을 통해서 UIColor를 다루는 방법을 소개했었습니다. 근데 작성하면서 새로운 기능을 알게 되었습니다. (기존 방법이 궁금하신 분들은 위 글을 참고해 주세요.) 위 코드를 보시면 저는 애셋에 맞게 변..
[iOS/Swift] Xcode 15 신기능 Assets 바로 사용하기 이미지, 색상 정의 (tistory.com) [iOS/Swift] Xcode 15 신기능 Assets 바로 사용하기 이미지, 색상 정의 급하게 작성하는 글... 불과 몇 시간 전에 [iOS/Swift] 색상 정의하고 관리하기 Assets, Enum, Extension (tistory.com) [iOS/Swift] 색상 정의하고 관리하기 Assets, Enum, Extension 앱 개발을 하다 보면 색상을 매번 적 jiwift.tistory.com Xcode 15 이상 버전을 사용하시는 분들은 최신 기능을 사용해보세요. 위에 글에서 정리되어있습니다.!! 기존에 방법이 궁금하신 분들은 아래 내용을 끝가지 읽어주세요.!! 앱 개발을 하다..
사진 한 장으로 설명 가능한 Rosetta 실행, 1. Xcode 실행 2. Product -> Destination -> Destination Architectures -> Show Rosetta Destinations 3. 끝 시뮬레이터 리스트를 열어보면 Rosetta 목록을 확인할 수 있습니다. ARM을 지원하지 않는 라이브러리가 있어서 맨날 실제 단말기로만 테스트하던 분들은 이 방법을 통해서 시뮬레이터로 실행을 시켜 보실 수 있습니다.
안녕하세요. 이번에는 iOS 앱의 처음 실행하는 경우에만 실행하는 로직들을 다루기 위한 글을 작성하려고 합니다. 이게 말이 iOS이지 사실 어느 프로그래밍을 하던 사용되는 방식을 비슷할 것이라고 봅니다. 다양한 방법이 있겠지만, 저는 UserDefatuls를 사용한 방법으로 진행할 것입니다. // 결과를 저장하는 함수 static func setIsFirstLaunch() { // UserDefaults에 값을 저장 let defaults = UserDefaults.standard defaults.set(true, forKey: "isFirstLaunch") } // 결과를 받아오는 함수 static func getIsFirstLaunch() -> Bool { let defaults = UserDefau..
UIPasteboard.general.string = "저장 내용" 정말 간단한 코드면 원하는 내용을 복사할 수 있습니다. 원하는 버튼을 선택했을 때, 원하는 로직이 동작했을 때 위 코드를 사용해서 내용을 복사를 구현할 수 있습니다. UIPasteboard.general.image = UIImage(systemName: "car") 원하는 이미지도 이렇게 해서 복사 가능합니다.
Realm이라는 라이브러리를 SPM을 통해서 설치하려고 했는데, Could not be resolved 라는 메시지가 발생했습니다.. Add Anyway가 있긴 했지만 뭔~가 찜찜했습니다. 찾아보니 CocoaPods을 사용하라는 말도 있긴했는데, 저는 설치 버전 바꿔줌으로써 해결했습니다. 라이브러리들 같은 경우 깃허브를 통해서도 버전을 볼 수 있으니 확인해 보세요. Dependency Rule 수정을 통해 해결
[iOS/Swift] Xcode 계속 로딩 빌드가 안 끝날 때, 디바이스 등록 확인 정 - 말 많은 원인들이 있겠지만 생각나는 거 하나 적어보겠습니다. 사실 별거 없습니다. 정말 간단하지만 크게 신경 안 쓰다 보면 다른 곳에서 원인을 찾고 있을 것 같은 것 중 하나를 작성합니다. Xcode가 빌드가 계속 로딩 상태에 빠저 있는 듯한 느낌을 받을 때가 있는데, 사실 자주는 없습니다. 언제냐 하면 새로운 디바이스를 연결했을 때입니다. 누구나 알고 있지만 어쩌다 한번 일어나기 때문에 까먹을 때도 있으니 Xcode 로딩이 안 끝날 때는 프로비저닝 뭐 문구가 있는지.. 디바이스 등록은 했는지.. 확인을 해봅시다. 등록이 제대로 되었는지는 개발자 센터에서 확인합니다. 개발자 센터에서 기기를 들어가 주세요. 그럼 이..
기존에 UIKit에서 Preview 기능을 사용하려면 어렵진 않지만 코드 여러 줄 작성해야 했습니다. 하지만 이번에 Xcode15에서는 매우 간단하게 사용할 수 있습니다. #Preview { RouletteViewController() } 이 코드 처럼 Preview 매크로를 선언하고 원하는 화면을 넣어주면 Canvas가 나오면서 미리 보기가 활성화됩니다. 다만 빌드 시간이 오래 걸리기도 하고 아직 저는 미숙해서 그런지 가끔 무한 로딩에 빠지는 화면도 있고, 에러가 발생하는 화면도 있더라고요.
[iOS/Swift] Xcode 빌드 성공 후 앱 실행 안될 때 간혹 가다 Xcode에서 빌드는 성공했으나 앱이 실행 안 되는 경우가 있습니다. 에러도 없고 다 괜찮은데 왜 그럴까요?? 1. 빌드 대상 타겟이 앱이 맞는지 제대로 확인한다. 여러 라이브러리가 섞여있는 경우 실수로 타겟이 변경되어 앱이 실행되지 않는 경우가 있습니다. 이럴 땐 다시 타겟을 앱으로 바꾸어 빌드하면 실행됩니다. ' 2. Scheme 설정의 Executable이 None인 경우 타겟도 제대로 했으나 왜 실행이 안될까요? 그럴 땐 Scheme 설정을 확인해보세요. Executable가 None이라면 눌러서 앱으로 바꿔주면 빌드 성공 후 앱이 제대로 실행될 것입니다. 가끔 이런 실수들로 별것도 아닌 일에 걱정하게 되고 쓸데없이 다른 ..
[iOS/Swift] TestFlight 이전 빌드 다시 받기 [iOS/Swift] 테스트플라이트 이전 빌드 다시 받기 이번에는 TestFlight된 이전 빌드를 다시 받아 보려고 합니다. 생각보다 TestFlight 앱을 자세하게 보시는 분들이 없는 것을 알고 글을 작성하였습니다. 사실 정말 간단하기 때문에 그렇게 긴글이 되지 않습니다. 저는 하급 노동자이기 때문에 TestFlight에 있는 앱은 모자이크 처리하는 점 양해 부탁드립니다. 테스트플라이트를 접속하면 내가 속했던 테스트 앱들이 나오게 됩니다. 거기서 이전 빌드를 '원하는 앱'을 선택해주고 메뉴에서 '이전 빌드'를 선택해서 들어가주세요. '이전 빌드'를 들어오게되면 테스트가 등록된 버전들이 나오게 됩니다. 여기서 원하는 버전을 선택해서 들어가..
iOS가 업데이트되면서 개발자 모드를 사용하기 위해서 설정에서 활성화를 해야 하는 단계가 추가되었습니다. 어렵진 않으나 어쩌다 한번 설정하기 때문에 헷갈리는 경우가 있어 블로그에 저장하도록 하겠습니다. 아이폰 설정 -> 개인정보 보호 및 보안 -> 개발자 모드 -> 활성화 위 순서대로 개발자 모드를 활성화합니다. 여기서부터는 애플이 하라는 대로 수행하면 되기 때문에 따로 알아볼 필요는 없습니다. 혹시 모르니 일단 다음 절차들이 궁금하신 분들은 계속 읽어주세요. 개발자모드를 활성화하면 재시동을 요구합니다. 아이폰이 재시동하면 Alert으로 한번 더 확인하고 단말기에 비밀번호가 설정된 경우 암호를 입력하면 됩니다. 이로서 개발자 모드를 활성화를 완료했습니다.
[iOS] 아이폰 사파리(Safari) 동작 안 할 때 혹은 결제, 본인인증 창 안 뜰 때 아이폰을 사용하다 보면 혹은 웹을 개발하다 보면 Safari에서 원하는 동작을 하지 않을 수 있습니다. 버튼이 안 눌러지거나, 결제 화면이 안 뜨거나 본인인증이 안 뜨거나와 같은 상황입니다. 이런 경우 정말 버그일 수 있지만 우선적으로 설정을 먼저 확인해봐야 합니다. 아이폰 설정 -> 고급 -> JavaScript 위 설정이 어떻게 되어있느냐에 따라서 웹이 동작하거나 안 할 수 있습니다. 이미 활성화되어있는 경우 다른 문제가 있을 수 있지만, 비활성화 상태라면 상태를 변경하고 웹에서 동작을 다시 한번 확인해 보세요.
오늘은 아이폰을 사용하다 보면 Safari에서 팝업이 안 떠서 결제가 진행이 안되거나 본인인증이 안 되는 경우를 겪으신 분들을 위해서 글을 작성합니다. 팝업차단을 허용하시기 바랍니다. 위 상황의 경우 팝업 차단뿐만 아니라 JavaScript 허용도 확인해봐야합니다. 바로 아래 사진을 통해서 확인하겠습니다. 1. 팝업 허용 요약하자면 아이폰 설정 -> Safari -> 팝업 차단 허용 을 통해서 손쉽게 가능합니다. 이렇게 해도 Safari에서 원하는 팝업이 뜨지 않는다면 JavaScript를 허용해야 합니다. 아래는 방법입니다. 2. JavaScript 허용 아이폰 설정 -> Safari -> 메뉴 아래로 이동 -> 고급 -> JavaScript 활성화 위 두 방법을 통해서 모두 활성화를 시키면 Safar..
Xcode에서 창을 여러 개로 띄우는 방법을 공유합니다. 제가 아는 건 두 가지입니다. 원하는 코드에서 우클릭하고 Open In New Window를 누르면 창이 하나 더 추가된다. 혹은 Command + T를 누르면 프로젝트가 탭으로 나뉘는데 원하는 탭 하나를 잡고 드래그해보면 분리된다. 끝!
[iOS/Swift] Xcode Unable to Authenticate with App Store Connect / No App Store Connect Access For The Team Xcode에서 업로드를 하는 도중에 두 에러가 발생했다. 1. Xcode Unable to Authenticate with App Store Connect 2. No App Store Connect Access For The Team 전혀 문제가되지 않던 계정이었는데 뭔가 문제일까 앱스토어도 확인하고 signing도 확인했으나,,,, 해결법은 맥 재부팅이었다.. The solution is to reboot your Mac.
Xcode에서 프로젝트를 열고 배포 준비를 마무리해줍니다. 상단 Product 메뉴를 선택하고 Archive를 진행하면 빌드와 함께 ipa 파일을 생성하게되고 Organizer 화면이 표시될 것 입니다. 여기서는 Archive된 목록이 표시되게 됩니다. 선택을 제대로 해주고 Distribute App을 선택해주세요. 그럼 이렇게 배포 유형이 표시되게 되는데요. 기본적으로 TestFlight & App Store를 선택하고 작은 Distribute를 누르면 업로드 절차가 수행됩니다. 원래는 이것 저것 표시되는 것들도 많았는데, Xcode 15부터는 바뀐 모양입니다. 이전 모습을 보고 싶으신 분들은 Custom을 통해서 진행하면됩니다. 프로비저닝이 필요하신분들도 Custom으로 진행해주세요. 업로드가 완료되..
이번 글에서는 카메라와 앨범의 권한 요청 및 권한 확인하는 코드를 알아보겠습니다. iOS 14 이상을 기반으로 작성되었습니다. enum MediaPermissionType { case camera // 카메라 권한 유형 case album // 앨범 권한 유형 } MediaPermissionType 열거형을 선언해서 사용하도록 하겠습니다. 그렇게 중요한건 아니고 개발자마다 분기문을 작성하는 방법이 다르기 때문에 전체 코드를 보시고 취향것 하시면 됩니다. camera: 카메라 권한을 나타내는 열거형 케이스. album: 앨범(사진 라이브러리) 권한을 나타내는 열거형 케이스. static func requestPermission(type: MediaPermissionType, completion: @esca..
import UserNotifications struct NotificationPermissionCheck { /* 사용자의 알림 권한을 확인하고 결과를 완료 핸들러를 통해 반환합니다. - Parameter completion: 알림 권한 확인 결과를 처리할 완료 핸들러입니다. `true`는 알림 권한이 부여된 경우를 나타내고, `false`는 권한이 거부되거나 아직 결정되지 않은 경우를 나타냅니다. */ static func check(completion: @escaping (Bool) -> Void) { let current = UNUserNotificationCenter.current() current.getNotificationSettings { settings in switch settings...
안녕하세요. 오늘은 개인적으로 사용하기 위해서 작성한 코드를 공유하려고합니다. 앱 UI 달력에서 월을 선택하면 그 기준으로 전/후 몇개월 기간을 계산해서 서버로 보내야하는 코드가 필요해서 만들었습니다. 현재는 연/월이 기준이지만 조금만 수정하면 연/월/일까지 사용 가능한 코드라서 조금만 보시면 바로 이해하실겁니다. 아래는 코드입니다. // 특정일을 연/월을 기준으로 범위 구하기 static func getDateRange(year: Int, month: Int, past: Int = 0, future: Int = 1) -> (fromDuration: String, toDuration: String) { // 입력 받은 날짜로 Date 구성 let calendar = Calendar.current var ..
[iOS/Swift] 테스트 플라이트(TestFlight) 배포시 Debug 상태로 배포하는 방법 정말 기초적인 내용입니다. 우선 해당 내용을 수행하기 위해서는 Configuration 및 Scheme이 설정되어야한다. Xcode로 프로젝트를 기본 생성하면 Configuration이 Debug와 Realese가 존재하는데.... 아무것도 건들지 않고 작업을 진행하면 크게 문제가되지 않지만, Debug와 Realese를 상황에 따라서 다르게 동작하거나 바라보는 서버를 다르게 구현하는 경우가있다. 이런 동작을 하지 않는다면 굳이 이 글을 읽을 이유는 없다. (사실.. 이미 Configuration을 설정했다면 이 글이 필요가 없긴하다.. 이미 알고있을태니.. 작성을 시작했으니 그냥 간단하게 작성은 하는 걸..
가끔가면 Archive가 끝나고 창이 안보일때가 있는데 창을 다시 열려고하면 안보인다... 이유는 해당 창 이름이 Organizer이기 때문이다. Xcode 상단 메뉴 -> Window -> Organizer 를 누르면 Archive 리스트 목록을 볼 수 있다.
안녕하세요. 오늘은 Storyboard가 아닌 코드 베이스로 프로젝트 생성하는 방법을 알아보도록하겠습니다. 우선 프로젝트는 UIKit으로 평소대로 생성을 해주세요. 삭제하기 위한 'Main' Storyboard를 선택하고 삭제를 수행해주세요. 이 상태로 실행하게되면 에러가 발생하기 때문에 다음 절차를 진행합니다. info.plist로 와서 Storyboard Name을 삭제해줍니다. 여기까지만해도 실행은 가능합니다. 이제 마무리 작업만 진행하면됩니다. [Target -> Build Settings -> All/Combined -> Storyboard(검색) -> UIKit Main Storyboard File Base Name]를 지워줍니다. 이런 모습이 되면 이제 코드를 작성해야합니다. func sce..