일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- ios
- 어플리케이션
- UIButton
- Swift
- 라이브러리
- UIKit
- PyQt
- TableView
- modal
- androidstudio
- graph
- UITableView
- 개발
- 개발자
- cocoapods
- library
- charts
- PyQt5
- Xcode
- ui
- kotlin
- 그래프
- Python
- Chart
- Apple
- Android
- button
- Storyboard
- Chrats
- alamofire
- Today
- Total
목록전체 글 (276)
Jiwift
String Catalog를 사용해서 앱 다국어 지원 완료 String Catalog를 사용해서 앱 다국어를 추가한 모습입니다. 퇴근하고 개발하다 보니 시간이 많이 부족하여 화면과 문구를 특정 문자로 정의하는 부분은 스킵하였습니다. 그래서 Key를 표현하고자 하는 문자 그대로를 사용하기로 했습니다.. 다른 사람들과 공유하는 프로젝트가 아니기 때문에 특정 규칙 없이 문자 그대로를 사용해도 적용해야 하는 위치와 내용을 알 수 있을 것 같았기 때문입니다. (기능이 많아지면 문제가 생길 것 같음) 그럼에도 불구하고 나 혼자서도 혼란이 생길 수 있는 부분은 KEY 문자 앞에 구분을 위해 "태그 그룹", "태그"와 같은 문구를 추가하여 구분 지을 수 있게 했습니다. String Catalog를 사용하면 앱 다국..
이번에는 앱의 다국어 지원을 추가해보려고 합니다. 앱이 기능이 더 추가된다고 생각하면 지금 타이밍에 하는 게 맞는 것 같아서 추가를 해둬야겠습니다. 영어와 한글 두개를 먼저 지원하는 방향으로 가야겠습니다. 다국어 지원을 하기 위해 찾아본 링크만을 위한 글입니다. iOS Localization. Xcode 15 신기능 스트링 카탈로그 | by woozoobro | Medium Swift) Localizing - 다국어 처리하기 (tistory.com) Swift) Localizing - 다국어 처리하기 안녕하세요 :-) 소들입니다 오늘은 Swift에서는 다국어를 어떻게 처리하는지에 대해 공부할 거예여! 다국어 처리가 무엇이냐 하면 우리가 화면에 다음과 같은 Label을 하나 만들고 text를 지정했어 ba..
iOS 앱 데이터 서버 없이 백업과 복원을 무료로 하는 법 (tistory.com) iOS 앱 데이터 서버 없이 백업과 복원을 무료로 하는 법iOS 환경의 앱을 Swift로 구현하면서 앱 데이터 백업과 복원을 무료로 하는 방법과 생각을 공유합니다. 개인이 앱을 만들다 보면 서버 없이 구현하는 경우가 많습니다. 이런 경우 DB는 다양한 라이jiwift.tistory.com 지난번에 위와 같은 글을 작성한 적이 있습니다. 일단 생각한대로 개발을 진행했고 생각한대로 동작하는 것까지 완료했습니다. 하지만 압축 과정에서 사용한 ZIPFoundation 라이브러리가 패스워드를 지원하지 않았기 때문에 압축에 비밀번호는 못 걸었습니다. 더 좋은 백업 방법이 있겠지만 왜 이 방법을 선택했냐면.. 그냥 해보고 싶었기 때문..
애플 Privacy Manifest 관련 메일을 받아보신 분이 있나요?? 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 2023년에 발표된 내용에 Privacy Manifest가 있습니다. 그 발표 후로 문제가 되는 앱에 대해서는 메일을 통해 알려주겠다고 나와있고, 2024년 봄부터는 앱 심사에도 영향이 간다고 공지가 되어있습니다. 혹시 위 내용과 관련해서 메일을 받..
Privacy Manifest를 앱에 추가해 보신 분 있나요?? 앱과 라이브러리에 PrivacyInfo를 추가해야 하는 것으로 알고 있는데, 앱에는 어떻게 추가해야 할까요?? 오픈 소스 라이브러리들이 하는 방식과 동일하게 그냥 추가하면 되는 것인지... 의견을 공유해 주시면 감사하겠습니다.
iOS 환경의 앱을 Swift로 구현하면서 앱 데이터 백업과 복원을 무료로 하는 방법과 생각을 공유합니다. 개인이 앱을 만들다 보면 서버 없이 구현하는 경우가 많습니다. 이런 경우 DB는 다양한 라이브러리가 있다고 해도 사용자의 데이터를 백업하고 복원하는 데는 무리가 있습니다. 일단 서버를 사용하지 않고, 백업과 복원이 가능해야 하고, 돈이 안 들어야 하고, 파일을 안전하게 보관해야 한다는 조건이 있습니다. 이미 알고 있던 것 CoreData 앱 데이터를 백업을 해주지만, 저는 Realm를 사용했기 때문에 생각을 하지 않기로 했습니다. 구글 드라이브 사용자의 구글 로그인을 통해서 드라이브 접근 권한을 받고, 드라이브 안에 앱 저장 공간을 확보하는 것으로 알고 있습니다. 무료라고는 하나 API를 연결하고 ..
fastlane 간단하지만 환경에 따라서 간단하지 않을 수 있습니다. 이럴거면 그냥 archive하지 설정을 이렇게 어렵게해야하나... 했지만.. 적용하고나니깐 알겠습니다. 명령어 돌리고 화장실을 다녀오니깐 확실하게 느껴지더라고요. 일단 저는 Testflight까지만 진행했고 아직 심사까지하는 절차는 하지 않았습니다. Testflight를 기준으로 업로드, 수출 규정 준서 체크까지 알아서 다해줍니다. 사진을 보시면 8분을 절약했다고 나와있네요. 심사 제출까지 해보려고했는데 에러가 발생해서 이 부분을 해결하고 테스트를 해봐야할 것 같네요. # This file contains the fastlane.tools configuration # You can find the documentation at http..
Error uploading '경로/경로/경로.ipa'. Unable to upload archive. Failed to get authorization for username '이메일' and password. ( The call to the altool completed with a non-zero exit status: 1. This indicates a failure. Could not download/upload from App Store Connect! Error uploading ipa file: [Application Loader Error Output]: Error uploading '경로/경로/경로.ipa'. [Application Loader Error Output]: Unable ..
fastlane 적용 법이 아닌 그냥 신세 한탄하는 글입니다.. 요즘 면접이나 우대사항을 보면 CI/CD, fastlane 같은 게 필수적인 것 같다. 그래 사용하면 편리하다는 건 알겠다. 근데 그것을 적용하기 위해서는 팀원들이 공감하고 같이 사용해야 한다. 혼자만 해서 무슨 의미가 있을까.. 근데 앱하나 그냥 만드는 것도 따라오기 벅찬 사람들도 있다. 근데 내가 적용한다고 좋아할까?? 업무외적으로 시간을 더 사용해야 하는 회사라면 더욱더 그렇다. 물론 서비스를 가진 회사이거나, 공부를 좋아하는 사람들이 모인 곳이면 누구 한 명이 적용하는데 시간을 사용하고 나머지 인원들이 업무 서포트해 줄 수 있다. 근데 나는 그런 상황이 아니잖아? 물론.. 사람들을 설득하는 것도 능력이라지만.. 그럴 수 있는 환경이라..
JTAppleCalendar에서 선택과 상관없이 오늘 날짜를 바로 표시하는 방법 지난 글 예제를 사용하면 날짜를 선택하는 기능이 있습니다. 이번에는 선택 없이 현재 날짜를 표시하도록 하겠습니다. 일단 오늘 날짜를 표시하기 위한 View를 Cell 안에 하나 생성합니다. 저는 정사각형으로 생성하였습니다. 그리고 Cell 코드에 IBOutlet을 todayView라는 변수로 연결하였습니다. 생성한 View는 색상을 지정해 주어서 눈으로 확인 가능하게 합니다. // DateComponents를 사용하여 두 날짜의 연, 월, 일 부분을 추출합니다. let components1 = Calendar.current.dateComponents([.year, .month, .day], from: date) let com..
JTAppleCalendar에서 특정 이벤트가 있을 경우 달력의 시작점과 끝점으로 한 번에 이동하는 기능 저는 StartDate 버튼과 endDate 버튼을 생성하였습니다. @IBAction func startDateButton(_ sender: Any) { self.calendarView.scrollToSegment(.start) } @IBAction func endDateButton(_ sender: Any) { self.calendarView.scrollToSegment(.end) } 그리고 위와 같이 코드를 작성하면 시작과 끝으로 한번에 이동이 가능하게 됩니다. 이전 달, 예정 달로 이동하는 방식과 동일하기 때문에 필요한 상황에 잘 사용하면 될 것 같습니다.
JTAppleCalendar를 사용하면서 달력을 지난달로 이동하거나 예정 달로 이동하는 기능을 알아봅니다. 저는 이벤트 발생 조건을 버튼으로 사용하려고 2개를 생성해 주었습니다. @IBAction func next(_ sender: Any) { self.calendarView.scrollToSegment(.next) } @IBAction func previous(_ sender: Any) { self.calendarView.scrollToSegment(.previous) } 그리고 IBAction을 연결해 주고 위와 같이 작성하였습니다. 정말 간단한 방법으로 앞/뒤 달을 이동 가능하게 만들어 저 있습니다. 버튼 혹은 특정 이벤트를 통해서 달력을 컨트롤할 수 있습니다.
JTAppleCalendar에서 스크롤 발생 시 페이징 기능으로 동작하게 하기 Storyboard로 작업하시는 분들은 Scoll View 옵션을 지정해서 페이징을 on/off 하실 수 있습니다. self.calendarView.isPagingEnabled = false 코드로는 이런 식으로 작성하면 on/off가 가능합니다. 그냥 UICollectionView의 기능을 사용하는 것이라서 이미 아시는 분들은 쉽게 찾으셨을 것 같습니다. 동작 모습
JTAppleCalendar는 세로, 가로를 설정할 수 있습니다. 매우 간단하기 때문에 짧게 끝날 것 같습니다. 달력을 보여주는 방법은 지난 글을 확인해 주세요. 위 사진과 같이 Storyboard를 사용하시는 분들은 UICollectionView의 Scroll Direction을 'Vertical, Horizontal' 중에서 선택해 주시면 됩니다. self.calendarView.scrollDirection = .horizontal 코드로 생성하면 이런 식으로 가능합니다. 좀 더 응용해 보면 위와 같이 버튼을 두 개 만들어서 방향을 원하는 순간에 변경할 수 있습니다. @IBAction func horizontalButton(_ sender: Any) { self.calendarView.scrollDi..
JTAppleCalendar를 사용해서 달력을 생성하고 출력하도록 하겠습니다. JTAppleCalendar를 사용법을 공유하는 한글 게시글이 아예 안 나오는데.. 저만 그런가요?? 아무튼 시작. JTAppleCalendar는 CollectionView를 기본으로 하는 라이브러리입니다. 일단 모두가 보고 알 수 있게 Storyboard를 사용해서 글을 작성하겠습니다. Code Base로 하실 분들은 참고하여 진행해 주세요. import UIKit import JTAppleCalendar class ViewController: UIViewController { let df = DateFormatter() override func viewDidLoad() { super.viewDidLoad() } } impo..
안녕하세요. 오늘은 JTAppleCalendar라는 라이브러리를 알아보려고 합니다. 기존에 잘 사용하는 FSCalendar가 있지만 한번 간단하게 알아보고 어느 정도 수준인지도 체크를 할 것입니다. 우선 두 라이브러리를 비교하자면 FSCalendar와 JTAppleCalendar는 달력 라이브러리입니다. Fork Star Last Commits FSCalendar 2000 105,000 2024/01/02 JTAppleCalendar 794 75,000 2024/01/19 깃허브를 기준으로 우선 비교를 해보겠습니다. Fork 수는 우리가 흔하게 볼 수 있는 FSCalendar가 많이 앞서고 있습니다. 하지만 Star 수는 둘 다 적지 않고 FSCalendar가 앞서기는 하지만 JTAppleCalendar..
iOS 뉴비 개인 앱 만들기 시작 (tistory.com) iOS 뉴비 개인 앱 만들기 시작 오래간만에 나만의 어플리케이션을 만들고 있다. 회사에서 배운 경험과 스택으로는 남들보다 많이 늦어진다는 생각이 항상 있기 때문에 집에서 공부를 하다가… 앱을 만들고있다. 적용하지 않 jiwift.tistory.com 앞전에 개인 앱 만들기 시작이라는 글을 올린 적이 있습니다. 그리고 출시를 완료했습니다. 이로서 개인적으로 진행하고 공개한 프로젝트가 3개가 되었습니다. 1. 사진에 숫자 입력 -> 아는 지인이 필요해서 출시한 앱(앱 주제를 고르기가 어려워 개인 맞춤으로 제작해 줌 ㅎㅎ) 2. MAutoClick -> SwiftUI를 공부할 겸 맥용으로 만든 오토마우스 앱! 오픈 소스이니 많은 기여 부탁드립니다. 3..
Privacy Manifest에서 NSPrivacyTracking와 NSPrivacyTrackingDomains를 확인하기 위해서 애플에서 알려준 방법입니다. 원하는 프로젝트에서 Product -> Profile 선택해 주세요. 이러면 앱 빌드를 진행하고 완료되면 창이 하나 뜨게 됩니다. 여기서 Network를 선택해주세요. Network를 선택하면 창이 바뀌고 녹화하는 버튼을 선택할 수 있습니다. 여기서 녹화는 로그를 기록하는 것입니다. 결과를 저장할 수 있습니다. 이미 다른 녹화가 진행 중이라면 끝내고 실행할 수 있습니다. 녹화를 진행하면 문제가 되는 지점에서 표시가 됩니다. 사진을 보면 기록 화면 왼쪽에 'HTTP Traffic', 'Network Connections', Points of Inte..
생각보다 중요한 내용인 것 같지만 경험해 본 자료도 없고 아직 PrivacyManifest를 제대로 하지 않았을 경우? 어떤 식으로 심사 과정이 진행되는지는 정보가 없어서 적용에 대한 방법들과 범위가 너무 궁금한데요… NSPrivacyTracking, NSPrivacyTrackingDomains, NSPrivacyCollectedDataTypes, NSPrivacyAccessedAPITypes 중에서 접촉되는 게 없는 타사 라이브러리도 PrivacyInfo를 추가해야하는 것인가?? https://developer.apple.com/support/third-party-SDK-requirements/ 에서 애플이 언급하지 않는 타사 라이브러리도 PrivacyInfo를 추가해야하는 것인가?? 내가 만든 정적 ..
[iOS/Swift] 'authorizationStatus()' was deprecated in iOS 14.0 초간단 해결 저는 위와 같이 코드를 사용해서 위치 권한 상태에 따른 팝업을 보여주도록 하였습니다. 하지만 iOS 14부터는 authorizationStatus()가 Deprecated 되기 때문에 수정을 진행하려고 합니다. 앱 최소 지원 iOS가 15이기 때문에 OS에 따른 분기는 없이 처리할 수 있습니다. CLLocationManager.authorizationStatus() 기존에는 이렇게 사용하던 코드를 CLLocationManager().authorizationStatus 이렇게 변경하면 됩니다. 소괄호를 CLLocationManager로 옮겨주기만 하면 됩니다. 아래는 사용 예시입니다..
제목 그대로 iOS 앱을 FSCalendar를 사용해서 출시하신 분이 있나요?? FSCalendar는 달력 라이브러리입니다. 많은 기능과 많은 커스텀을 제공하기 때문에 여러 디자인에 활용하기 좋은데요.. 스타와 포크 수만 봐도 많은 인기가 있는 라이브러리라는 것을 알 수 있어요. 깃허브에서 릴리즈는 2021(2.8.3)년이 마지막이지만 머지 내역을 보면 2.8.4가 가장 최신입니다. 저는 이 라이브러리도 PrivacyManifest가 적용되어야 한다고 생각이 드는데... 코드 기준으로는 문제가 없지만 써드파티 라이브러리니깐 PrivacyInfo 파일을 추가해야 한다고 생각되거든요.. 문제는 제작자가 중국인이고.. 응답도 느리다고 표시를 해두었네요. 제가 실제로 메일을 보냈는데, 한번 응답이 있고 그 후로..
오래간만에 나만의 어플리케이션을 만들고 있다. 회사에서 배운 경험과 스택으로는 남들보다 많이 늦어진다는 생각이 항상 있기 때문에 집에서 공부를 하다가… 앱을 만들고있다. 적용하지 않으면 솔직히 의미가 없다고 판단. 기능은 대단하지 않다. 그리고 이미 비슷한 기능을 가진 몇몇 앱들이 존재한다. 하지만 아이디어만 5번 갈아 엎고나서 그냥 만들기로했다. 시작한지는 한달이 좀 지났고 기능 정리는 거의다 끝내서 개발만 진행하면된다. 개발은 70%한 것 같은데,,, 디자인이 역시 꽝이다. 일단은 기능 중심으로 개발을 끝내 1차로 출시하고 디자인을 바꿔가는 유지보수를 진행할 예정이다. 아직은 배포 버전이 나오지 않고 기능과 디자인도 쉽게 변경되고 있어서 어차피 개인앱 커밋 내용은 중요하지 않아 보여서 '기본 다지기 ..
사진과 같이 화면 전체를 덮는 TableView를 생성하겠습니다. 간단한 코드 몇줄로 끝내기. lazy var tableView: UITableView = { let tableView: UITableView = UITableView() tableView.backgroundColor = .orange return tableView }() 우선 테이블 뷰를 선언해줍니다. self.view.addSubview(self.tableView) self.tableView.snp.makeConstraints { $0.top.leading.trailing.bottom.equalToSuperview() } 그리고 원하는 위치에서 선언과 제약 조건을 걸어줍니다. 이러면 기본적으로 화면에 표시됩니다. lazy var tabl..
‘스타트업’이라는 단어를 생각하면 떠오르는 이미지는 복지, 젊음, 도전, 실패를 두려워하지 않는 모습을 많이 떠올리게 된다. 드라마와 학원 광고에서 그렇게 묘사되는 경우가 많고, 성공한 스타트업들은 그런 모습이기 때문이다. 그래서 많은 사람들이 개발자, 스타트업하면 좋아 보이는 이미지를 같기도 한다. 하지만 사전적 의미로는 아래와 같다. 스타트업(Start-up)은 설립한 지 얼마 되지 않은 '신생 창업기업'을 뜻합니다. 1990년대 후반 인터넷 관련 분야가 성장하면서 창업 붐이 일었을 때 미국 실리콘밸리에서 처음 생겨난 용어라고 합니다 https://www.jobaba.net/thema/exprcDtl.do?seq=3807&cntntsSeCd=01 [어알정알] “다 똑같은 신생기업 아니야?” ‘스타트업..
그래프의 값을 표시한느 선을 빼고는 모든 것을 지우고 싶은 경우에 사용. 아마 Bar Graph도 동일 적용될 것입니다. // 범례 삭제 chart.legend.enabled = false // x축 Grid chart.xAxis.drawGridLinesEnabled = false // x축 라벨 chart.xAxis.drawLabelsEnabled = false // x축 선 chart.xAxis.drawAxisLineEnabled = false // 왼쪽 값 표시 제거 chart.leftAxis.enabled = false // 오른쪽 값 표시 제거 chart.rightAxis.enabled = false 위 옵션을 적용하면 그래프 값을 나타내는 선 말고는 모두 제거될 것 입니다.
원래 이런 글을 싫어하지만 요즘 번아웃이 조금 온 것 같아서 나를 되돌아보기 위해서 작성합니다. 회고? 일기? 내 생각? 글이기 때문에 반말로 진행하는 점이 양해 부탁드립니다. 지금 나는 약 3년 차 개발자이다. 3년을 다니면서 이직은 2번으로 3개의 회사를 다녔다. 첫 1년은 첫 번째 회사에서 Python으로, 그리고 나머지 2개의 회사에서 2년은 iOS 개발자로 보냈다(지금도 진행 중). 회사에서 진행했던 프로젝트는 단순하게 세 보면 6개이다. 첫 번째 회사에서 Python을 사용해서 정부 과제와 회사의 솔루션을 사용하기 위한 클라이언트를 만들었다. PyQt를 사용했고, 클라이언트를 개발하면서 재미가 있었고, 나도 개발자로 가능성이 있다고 스스로 판단하였다. 이후 iOS 개발로의 전환을 고려하게 되었..
오늘은 깃 허브 오픈소스를 기여하는 방법을 알아보도록 하겠습니다. 제가 이걸 하게 된 이유는,,, 기다리는 게 답답하고 내가 기여를 하면서 다른 사람들에게 의견을 들어볼 수도 있기 때문입니다. 우선 기여하고 싶은 오픈소스 깃허브를 찾아갑니다. 여기에 들어가면 Issue와 Pull Requests(PR)들을 볼 수 있습니다. 이슈를 직접 해결하거나 내가 원하는 기능을 추가해서 PR 하게 되면 오픈소스의 Contributor가 될 수 있는 것입니다. 1. 라이브러리 Fork 2. 라이브러리 수정 + Push 3. 라이브러리 PR 단계는 크게 3단계로 생각할 수 있습니다. 이것만 알아도 깃허브를 사용하시는 분들은 이미 어떻게 해야 하는지 감이 오실 겁니다. 그래도 한번 작성하도록 하겠습니다. 캡처된 사진은 서..
아주 간단하게 javascript를 통해서 띄우는 방법입니다. 각각 환경에 맞게 변경이 필요할 것 같습니다. 위 코드를 사용하면 무조건 버튼이 하나 생성되게 됩니다. 그리고 웹페이지가 열리게되는데, 부족한 부분이 있으면 에러 코드가 발생합니다. index.html 파일 하나 생성해서 안에 코드를 붙여넣고 실행해보세요. appleid-signin-client-id 로그인 서비스를 위해 생성된 Service Identifier를 입력해야합니다. 애플 개발자 ID가 필요하며 개발자 센터에서 가능합니다. appleid-signin-scope 요청할 Scope 이름(name)과 이메일(email). 띄어쓰기를 기준으로 구별하며 필요한 것만 입력하고, 둘다 필요하면 위 코드 예제처럼 "name email"하면 됩니..
Nams님의 프로젝트를 기반으로 수정을 진행한 코드입니다. [Swift] Multi Line Tag View 그리기 (tistory.com) [Swift] Multi Line Tag View 그리기 SwiftUI만 하다가 UIKit을 하게될 일이 생겼는데 요구사항중하나가 뷰를 크기에 맞게 여러줄로 표현해주는 뷰에요 테그를 표현하는 뷰같은 곳에 많이 쓰이는 UI로 알고있어요 결과물 부터 보시죠! nsios.tistory.com wlxo0401/MultiLineTagView: A Multi Line Tag View for iOS(Swift) (github.com) GitHub - wlxo0401/MultiLineTagView: A Multi Line Tag View for iOS(Swift) A Multi ..
SnapKit/SnapKit: A Swift Autolayout DSL for iOS & OS X (github.com) 2023년 12월 31일자로 PrivacyManifest 추가됨. 아래는 읽을 필요 없는 내용입니다. 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 Privacy Manifest를 필수 적용해야하는 대상들 중 하나는 SnapKit이다. 근데 이 라이브러리 마지막 업데이트는 2022년 4월이다. 인..