일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- UIKit
- Swift
- alamofire
- androidstudio
- 그래프
- ios
- graph
- kotlin
- Android
- 개발
- button
- Apple
- PyQt
- 라이브러리
- UITableView
- 개발자
- library
- Chart
- cocoapods
- 어플리케이션
- Xcode
- TableView
- modal
- PyQt5
- UIButton
- ui
- Python
- charts
- Chrats
- Storyboard
- Today
- Total
목록전체 글 (277)
Jiwift
Xcode에서 UIColor 에셋 설정을 완료하고 다크모드와 라이트모드를 적용을 했으나를 사용하는 다크모드 혹은 라이트모드가 반영되지 않는 겨우가 있습니다. 분명 화면 모드를 변경했고 다른 애들은 다 바뀌었는데, 특정 누군가가 바뀌지 않는 경우를 저는 경험했습니다. 첫 번째로 확인해야하는 곳은 UIColor 에셋입니다. 여기도 문제가 없이 제대로 해두었다면, UIColor를 cgColor로 사용했는지 확인을 해야합니다. self.textFieldBoxView.layer.borderColor = UIColor(named: "surface200-Dark1")?.cgColor 위와 같이 UIColor를 cgColor로 적용하고있는 경우 변경이 적용되지 않습니다. 이유로는 cgColor가 다이나믹 컬러를 지원하..
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { if previousTraitCollection != nil { // 다크모드 라이트모드 변경후 수행 할 코드 if previousTraitCollection?.userInterfaceStyle == .dark { // 다크모드 상태입니다. } else { // 다트모드 상태가 아닙니다. } } } 다크모드를 변경을 감지하고 싶을때 사용하면 되는 코드입니다. UIView와 UIViewController를 상속받으면 사용 가능합니다.
내가 생각하고 내가 경험하고 작성하는 UITableView.. 들어가기 전 UI작업을 하다보면 실제 화면 사이즈보다 컨텐츠 내용이 더 많은 경우를 고려해서 작업을 해야합니다. 이런 경우 Scroll을 사용하게됩니다. iOS에서는 UIScrollView(UIKit), ScrollView(SwiftUI)가 우리를 도와주게 됩니다. 오늘 글은 UIScrollView와 비교를 통해서 UITableView를 알아보려고합니다. 제일 쉽게 접하는 곳은 웹툰이 있습니다. UIScrollView를 사용하면 다양한 해상도를 지원하기에도 좋습니다. UITableView를 왜 쓰는데? 위에서 설명한대로 Scroll 가능한 도구가있는데 왜 UITableView를 쓰는지 궁금할 수 있습니다. 실제로 UIScrollView와 UI..
앱에서 특정 사용자에게만 제공되는 정보가 있다거나, 유료 컨텐츠를 제공해야하는 상황에서 화면이 캡처되는 것은 서비스하는 입장에서 매우 큰 걸림돌입니다. 이번 글에서는 화면 캡처와 녹화를 방지하고 다른 화면이 캡처되는 동작까지 수행해보겠습니다. Apple은 iOS에서 화면 녹화, 화면 캡처를 공식적으로 만는 방법을 제공하지 않습니다. 하지만 TextField에 있는 isSecureTextEntry를 통해서 이 기능을 구현할 수 있습니다. extension UIView { func preventCapture() { DispatchQueue.main.async { let textField = UITextField() textField.isSecureTextEntry = true self.addSubview(t..
1. Xcode에서 Assets으로 이동 2. "+" 버튼을 누르고 Color Set을 추가 3. 색상을 원하는 이름으로 변경 4. 원하는 색상을 설정. - Appearance는 Any, Light, Dark로 나뉜다. - 위 사진 Any Appearance와 Dark를 설정하면 Light모드에서 Any Appearance 색상이, Dark모드에서 Dark 색상이 표시된다. 코드로 사용하기 위해서는 아래와 같이 적용하면된다. // 사용법 self.myView.backgroundColor = UIColor(named: Assets이름) // 실제 사용 self.myView.backgroundColor = UIColor(named: "myColor")
self.myView.backgroundColor = UIColor.red self.myView.backgroundColor = UIColor(named: "myColor") self.myView.backgroundColor = UIColor(red: 0.0824, green: 0, blue: 0.1765, alpha: 1.0) backgroundColor를 사용하면 UIView 색상을 변경할 수 있습니다. backgroundColor는 UIColor를 값으로 받는데 UIColor가 지원하는 다양한 방법으로 구현이 가능합니다.
// FCM Import import FirebaseMessaging Messaging.messaging().unsubscribe(fromTopic: "FCM TOPIC NAME") { error in if let error = error { print("토픽 구독 해제 실패: \(error.localizedDescription)") } else { print("토픽 구독 해제 성공 : FCM TOPIC NAME") } } fromTopic 자리에 구독한 Topic 이름 입력으로 구독해제 가능. [iOS/Swift] FCM(Firebase Cloud Messaging) - Topic(주제)를 구독하고 메세지 받기 (tistory.com) [iOS/Swift] FCM(Firebase Cloud Messag..
우선 브릿지 삭제 방법은 forName자리에 삭제하고 싶은 userContentController 입력 self.loginWKView.configuration.userContentController.removeScriptMessageHandler(forName: "bridge") 사실 이건 나만이 겪을 것 같은 상황이다. 다른분들은 이런 상황이 당연하게 없겠지만.. 혹시나 해서 기록 웹이 이미 개발이 완료된 상태였다. 그 와중에 나는 하나의 ViewController에서 두개의 Webkit을 사용해야했고, 브릿지 이름 또한 똑같은 두 화면이었다. 해보면 바로 알겠지만 userContentController는 같은 이름을 두개의 브릿지에 등록할 수 없다. self.oneWk.configuration.use..
세상에 많은 앱들은 네이티브 + 웹으로 구성되어있다. 코어한 부분은 네이티브로.. 수정이 많지만 배포를 줄이고 싶은 경우, 이미 웹으로 만들어서 두번 작업하기 싫은 경우. iOS에서는 WebKit을 사용해서 네이티브 앱 안에서 웹을 보여준다. 단순하게 보여주는 것 뿐만 아니라 서로 소통하게 도와준다. 그게 바로 userContentController다. 적용은 너무 간단하다. self.loginWebKitView.configuration.userContentController.add(self, name: "bridge") 원하는 WebKit에 위 코드를 통해서 등록한다. name 자리에 웹에서 전송하는 브릿지와 동일해야한다. 위를 등록해두면 bridge라는 이름으로 메세지가 들어오게되고 그 안에 데이터를..
정답이 아닐 수 있습니다. 각자 상황에 맞는 방법을 찾아서 사용하시면 됩니다. 인터넷을 하다보면 새로운 창이 필요할 때가 있습니다. Nice 본인인증과 같은 상황이조. 근데 우리가 사용하는 앱들은 창이 여러개가 보여지지 않습니다. 대부분 사용하는 앱들은 회원가입을 진행하거나 물건을 구매할때 순차적으로 진행되는 화면을 보게됩니다. PC 환경 처럼 새로운 창을 띄우는 경우는 드물다고 봅니다.(기획에 따라 다름) 근데.. 역시 예외 상황은 꼭 생기고 PC 환경 처럼 새로운 탭을 열어서 작업이 필요한 경우가 있습니다. 이유는 모릅니다. 한가지 상황을 생각해봅시다. 어딘가에 회원가입을 웹뷰로 만드는 서비스가 있다고 생각합니다. (회원가입 부분은 프론트엔드 개발자가, 네이티브 WebKit과 브릿지 확인은 iOS 개..
[Node] FCM Topic(주제)을 이용한 Push Notification 메세지 전송 노드는 하나도 모릅니다. Chat GPT를 통해서 테스트한 내용을 나중에 필요한 상황에 사용하려고 작성합니다. 일단 왜 내가 Node를 통해서 테스트를해야하는지 설명하자면.. 지금 하는 프로젝트 서버팀에서 FCM 메세지를 보내주는데, 서버에서 받은 내용을 토대로 파싱해 알림 제목과 내용을 만들어 뿌려야한다. 왜냐하면?? 서버에서 내려주는 알림에는 title과 body가 없기 때문이다. 여기서 문제는 iOS에서 푸시를 받으면 title과 body를 자동으로 읽어서 사용자에게 보여주는 것으로 알고있다. 그럼 어떻게 중간 단계에서 파싱을하지? 아니.. 앱이 실행중이지 않다면 불가능한게 아닌가?? 라는 생각이 들었다. 반..
처음 FCM을 접하면 Token을 사용한 방법으로 연습하게됩니다. 그래서 이번에는 Topic(주제)를 통한 메세지 처리를 알아보도록 합니다. 이미 알고 오신 분들은 코드만 필요하시니 먼저 코드를 보여주고 왜 사용하는지 정리하도록 하겠습니다. Messaging.messaging().subscribe(toTopic: "kimjitae") { error in if let error = error { print("구독 실패: \(error.localizedDescription)") } else { print("구독 성공") } } FCM Token을 사용한다면, 유저마다 토큰을 서버에서 알고있어야합니다. 서버는 원하는 상황에 타겟 유저의 토큰을 DB에서 읽고 Push를 보내게됩니다. 이런 방식을 사용하면 다양한..
애플페이 교통카드 지원 속도… 개발자 문서에 '티머니' 추가 | 서울경제 (sedaily.com) 애플페이 교통카드 지원 속도… 개발자 문서에 '티머니' 추가 애플 개발자 문서에 ‘티머니(tmoney·T머니)’ 항목을 추가했다. 애플은 국내에서 티머니와 애플페이의 교통카드 사용 필... www.sedaily.com 티머니 문서가 추가되었다는 뉴스. tmoney | Apple Developer Documentation tmoney | Apple Developer Documentation There's never been a better time to develop for Apple platforms. developer.apple.com 티머니 도큐먼트 해당 문서를 들어가보면 다른 회사들 도큐먼트도 존재하는..
[Python] FCM Topic(주제)을 이용한 Push Notification 메세지 전송 Push Notification을 받을 수 있는 웹, 앱 환경이 필요합니다. 순서 1. 비공개 키 생성 2. 라이브러리 설치 3. 코드 작성 4. 실행 파이어베이스 프로젝트 설정에 들어갑니다. [서비스 계정 -> Python -> 새 비공개 키 생성]을 순서대로 눌러줍니다. 그럼 json 파일을 하나 다운을 받을겁니다. Python 파일과 비공개 키 json 파일을 원하는 위치에 준비시킵니다. pip install firebase_admin python 필요 라이브러리를 설치해줍니다. import firebase_admin from firebase_admin import credentials from fireb..
[Python] FCM Token을 이용한 Push Notification 메세지 전송 Push Notification을 받을 수 있는 웹, 앱 환경이 필요합니다. 순서 1. 비공개 키 생성 2. 라이브러리 설치 3. 코드 작성 4. 실행 파이어베이스 프로젝트 설정에 들어갑니다. [서비스 계정 -> Python -> 새 비공개 키 생성]을 순서대로 눌러줍니다. 그럼 json 파일을 하나 다운을 받을겁니다. Python 파일과 json 파일을 원하는 위치에 준비시킵니다. pip install firebase_admin python 필요 라이브러리를 설치해줍니다. import firebase_admin from firebase_admin import credentials from firebase_admin ..
[iOS/Swift] 라이브러리 수정하고 Git + Pod으로 관리하기 | by 김지태 | Jun, 2023 | Medium 미디엄에 작성한 제 글을 티스토리로 이동했습니다. 들어가며 앱을 만들다보면 UI/UX에 대해서 많은 라이브러리를 사용하게됩니다. 단순한 라이브러리들은 기능만 잘 수행하면되는데, 차트와 캘린더같이 큰 라이브러리들은 다양한 꾸밈 옵션을 제공하기도합니다. 하지만 라이브러리는 불특정 다수를 위해 만들어젔기 때문에 우리 앱에서 필요한 기능을 충족하지 않는 경우가 생깁니다. (로직적 기능은 생각하는 수준에서 지원되지만, 디자인은 기존 기능으로 부족한 경우가 있습니다.) 예를들어 서비스 메인 기능이 [일기, ToDo, 가계부]면서 ‘우리만의 특별한 기능과 디자인을 넣어야겠다’는 생각이 있다면,..
카카오내비, TMAP(티맵)과 같은 볼륨 조절 iOS에서 어플리케이션을 만들다 볼륨을 조절해야하는 상황이 생겼다. 인터넷에서 제일 먼저 나오는 방법을 찾아서 적용하면 위 사진처럼 볼륨 조절 모양이 나오지만 원하는 결과는 이루었다. 하지만 기기 전체 볼륨이 조절되기 때문에 사용성에서는 많이 안좋다고 생각되어서 더 찾아보았다. class TTSManager { static let shared = TTSManager() private let synthesizer = AVSpeechSynthesizer() var volume: Float = 1.0 internal func play(_ string: String) { let utterance = AVSpeechUtterance(string: string) utt..
미디엄에 작성한 글을 옮겨왔습니다. iOS 1년 개발하고 느낀점. 글을 들어가기 전에 개발하면서 느낀점..이지 정답은 아니라는 점을 먼저… | by 김지태 | 월요일 오후 9시 | Apr, 2023 | Medium iOS 1년 개발하고 느낀점 글을 들어가기 전에 개발하면서 느낀점..이지 정답은 아니라는 점을 먼저 알리고 시작합니다. medium.com 글을 들어가기 전에 개발하면서 느낀점..이지 정답은 아니라는 점을 먼저 알리고 시작합니다. 안녕하세요. 저는 개발한지는 3년 Swift로 iOS 개발을 시작한지는 1년된 주니어 개발자입니다. 이번 시간에는 혼자서 개발을 진행하면서 너무 당연하지만 처음 시작할 땐 몰랐던 내용을 공유해드리려고합니다.(이미 많은분들이 알고 있을 수도 ㅎㅎ) 모르는게 생기면 커뮤..
[iOS/Swift] Swift OCR - TesseractOCRiOS를 이용한 글자 인식(Text Recognition) iOS Swift 환경에서 OCR을 적용해보려고 합니다. 정확한 이해보다는 실행에 중점을 두고 진행하겠습니다. 사용할 라이브러리 이름은 TesseractOCRiOS입니다. 진행 순서 1. 소개 2. 설치 3. 간단 사용법 4. traineddata 추가 5. 결과 gali8/Tesseract-OCR-iOS: Tesseract OCR iOS is a Framework for iOS7+, compiled also for armv7s and arm64. (github.com) GitHub - gali8/Tesseract-OCR-iOS: Tesseract OCR iOS is a Framew..
[iOS/Swift] Swift OCR - SwiftyTesseract iOS Swift 환경에서 OCR을 적용해보려고 합니다. 정확한 이해보다는 실행에 중점을 두고 진행하겠습니다. 사용할 라이브러리 이름은 SwiftyTesseract입니다. 진행 순서 1. 소개 2. 설치 3. 간단 사용법 4. traineddata 추가 5. 결과 SwiftyTesseract/SwiftyTesseract: A Swift wrapper around Tesseract for use in iOS, macOS, and Linux applications (github.com) GitHub - SwiftyTesseract/SwiftyTesseract: A Swift wrapper around Tesseract for use in..
라이브러리를 찾다 보면 위와 같이 깃 주소를 통해서 다운로드하는 방법이 있습니다. SPM을 사용한 방법으로 깃 주소만 알고 있으면 간단하게 설치가 진행됩니다. 처음에 cocoapods을 사용하다 SPM을 사용하니 pod 설치 과정에 생기는 파일들을 따로 신경쓰지 않아도 되는 편리함이 있습니다. File - Add Packages 메뉴를 들어갑니다. Packages 목록이 출력됩니다. 여기서 원하는 라이브러리를 검색하여 설치할 수 있습니다. 깃 허브 링크를 바로 붙여넣기해도 검색이 가능합니다. Rule을 설정하고 Add Package를 누르면 설치 가능한 라이브러리를 불러오기 시작합니다. 설치 가능한 목록이 표시되면 선택하고 추가로 진행하면 됩니다. 위 사진은 하나이지만 RxSwift 같은 라이브러리들은 ..
2023.01.21 - [라이브러리/FCM] - [iOS/Swift] FCM(Firebase Cloud Messaging) - 푸시 알림(Push Notification) 간단하게 알아보기, APNs 2023.02.03 - [라이브러리/FCM] - [iOS/Swift] FCM(Firebase Cloud Messaging) - Xcode, 구글 콘솔 프로젝트 생성하기, Signing & Capabilities 등록 2023.02.03 - [라이브러리/FCM] - [iOS/Swift] FCM(Firebase Cloud Messaging) - Xcode, 구글 콘솔 프로젝트 연동하기 2023.02.04 - [라이브러리/FCM] - [iOS/Swift] FCM(Firebase Cloud Messaging) - ..
2023.01.21 - [라이브러리/FCM] - [iOS/Swift] FCM(Firebase Cloud Messaging) - 푸시 알림(Push Notification) 간단하게 알아보기, APNs 2023.02.03 - [라이브러리/FCM] - [iOS/Swift] FCM(Firebase Cloud Messaging) - Xcode, 구글 콘솔 프로젝트 생성하기, Signing & Capabilities 등록 2023.02.03 - [라이브러리/FCM] - [iOS/Swift] FCM(Firebase Cloud Messaging) - Xcode, 구글 콘솔 프로젝트 연동하기 2023.02.04 - [라이브러리/FCM] - [iOS/Swift] FCM(Firebase Cloud Messaging) - ..
2023.01.21 - [라이브러리/FCM] - [iOS/Swift] FCM(Firebase Cloud Messaging) - 푸시 알림(Push Notification) 간단하게 알아보기, APNs 2023.02.03 - [라이브러리/FCM] - [iOS/Swift] FCM(Firebase Cloud Messaging) - Xcode, 구글 콘솔 프로젝트 생성하기, Signing & Capabilities 등록 2023.02.03 - [라이브러리/FCM] - [iOS/Swift] FCM(Firebase Cloud Messaging) - Xcode, 구글 콘솔 프로젝트 연동하기 2023.02.04 - [라이브러리/FCM] - [iOS/Swift] FCM(Firebase Cloud Messaging) - ..
2023.01.21 - [라이브러리/FCM] - [iOS/Swift] FCM(Firebase Cloud Messaging) - 푸시 알림(Push Notification) 간단하게 알아보기, APNs 2023.02.03 - [라이브러리/FCM] - [iOS/Swift] FCM(Firebase Cloud Messaging) - Xcode, 구글 콘솔 프로젝트 생성하기, Signing & Capabilities 등록 2023.02.03 - [라이브러리/FCM] - [iOS/Swift] FCM(Firebase Cloud Messaging) - Xcode, 구글 콘솔 프로젝트 연동하기 2023.02.04 - [라이브러리/FCM] - [iOS/Swift] FCM(Firebase Cloud Messaging) - ..
2023.01.21 - [라이브러리/FCM] - [iOS/Swift] FCM(Firebase Cloud Messaging) - 푸시 알림(Push Notification) 간단하게 알아보기, APNs 2023.02.03 - [라이브러리/FCM] - [iOS/Swift] FCM(Firebase Cloud Messaging) - Xcode, 구글 콘솔 프로젝트 생성하기, Signing & Capabilities 등록 2023.02.03 - [라이브러리/FCM] - [iOS/Swift] FCM(Firebase Cloud Messaging) - Xcode, 구글 콘솔 프로젝트 연동하기 2023.02.04 - [라이브러리/FCM] - [iOS/Swift] FCM(Firebase Cloud Messaging) - ..
[iOS/Swift] Charts 그래프 라이브러리 커스텀 마커 | Highlight Selected Value With a Custom Marker | 선택 값 출력 꾸미기 오늘은 Custom Marker를 만들어보도록 하겠습니다. 선택하면 나오는 Value를 좀 더 Custom 해서 보여줄 수 있습니다. 시작하기 전에 필요한 구성부터 확인하겠습니다. 기본적으로 차트가 보이는 ViewController와 CustomMarker를 그리는 View와 Class가 필요합니다. 처음에는 기본적으로 우리가 평소에 하던 방법으로 Chart를 그려줍니다. 다음은 CustomMarkerView Class 생성입니다. // // CustomMarkerView.swift // ChartsLibTest // // Crea..
[iOS/Swift] Charts 그래프 라이브러리 둥글게 라운드 처리 | 막대 그래프 코너, corner radius 01 - 기본 적용 — Jiwift (tistory.com) 앞에 글에서 막대 그래프 모서리를 둥글게 적용했지만 하이라이트 상태에서는 설정이 적용되지 않는 문제가 있었습니다. 이 글을 따라하면 쉽게 적용할 수 있습니다. 선택 기능을 제공하지 않는 어플리케이션은 적용하지 않아도 괜찮습니다. 해당 글은 Charts 라이브러리 4.1.0 버전을 기준으로 작성되었습니다. 3.x.x 후반 버전에서 적용한 위치가 다르기 때문에 다시 작성하였습니다. 시간이 흘러 본 게시글과 내용이 다를 수 있습니다. 라이브러리를 수정하는 방법으로 적용합니다. pods에서 BarChartRenderer를 찾아갑니다...
막대그래프 모서리를 둥글게 처리하는 방법을 소개합니다. 해당 글은 Charts 라이브러리 4.1.0 버전을 기준으로 작성되었습니다. 3.x.x 후반 버전에서 적용한 위치가 다르기 때문에 다시 작성하였습니다. 시간이 흘러 본 게시글과 내용이 다를 수 있습니다. 라이브러리를 수정하는 방법으로 적용합니다. pods에서 BarChartRenderer를 찾아갑니다. 382줄에서 'context.fill(barRect)'를 주석처리합니다. let bezierPath = UIBezierPath(roundedRect: barRect, cornerRadius:3.2) context.addPath(bezierPath.cgPath) context.drawPath(using: .fill) 주석하고 위 코드를 입력하면 적용 완..
// 선 색 barChartdataSet.barBorderColor = .red 위 메서드를 적용하고 싶은 막대 그래프 데이터 셋에 적용 SwiftExample/BarChartViewController.swift at main · wlxo0401/SwiftExample (github.com) GitHub - wlxo0401/SwiftExample: My study, record and share My study, record and share. Contribute to wlxo0401/SwiftExample development by creating an account on GitHub. github.com