iyOmSd/Title: Swift 91

[Swift] UITableViewDiffableDataSource

iOS13+에서 사용할수 있는 API구요 WWDC19에서 소개됬고 TableView 및 CollectionView의 데이터의 업데이트를 쉽게 도와주는 역할이에요 보통 사용하고 있는 DataSource를 이용한 방식은 numberOfItemInSection cellForItemAt 와같은 함수를이용해서 위의 형식처럼 컨트롤러에게 섹션이몇개니? Cell이 몇개니? Cell은 어떻게 생겻니? 물어보면서 설정했었죠 설정이후 서버통신을 통해서 데이터를 불러와서 다시 업데이트를 진행하는과정에서... 아래처럼 에러가 나기도하죠 WWDC를 보면서 피식하기도하네요 🤣 이러한 문제점을 잡아서 새로 나온 것이 Diffable Data Source 입니다! 무엇이 더 좋은가~? TableView를 업데이트 하려했다면 begi..

iyOmSd/Title: Swift 2021.05.01

[Swift] UICollectionViewCompositionalLayout

WWDC19에서 소개된 내용이에요 CollectionView의 Layout을 커스텀하기 쉽게 만들어주는 역할을 해줘요 iOS13+ 에서 사용할 수 있는 API구요 들어가기앞서 이 레이아웃을 사용하기위해서 기본적으로 알아야할 개념들이있어요 NSCollectionLayoutSize NSCollectionLayoutItem NSCollectionLayoutGroup NSCollectionLayoutSection 여기에 추가적으로 NSCollectionLayoutSupplementaryItem NSCollectionLayoutBoundarySupplementaryItem 까지! (이부분은 헤더뷰 푸터뷰 필요없으면 안보셔도 OK) 왜알아야해...? UICollectionViewCompositionalLayout를..

iyOmSd/Title: Swift 2021.04.27

[Swift] 정규식으로 유효성 확인하기

정규식을 검색해보면 크게 NSRegularExpression타입과 NSPredicate타입이 있어요 둘의 차이는 NSPredicate - 메모리 내 필터링 이나 검색을 통한 패치 -> Collection안의 내용을 검색 혹은 필터하는 용도 NSRegularExpression - 유니코드 문자열에 적용되는 정규식의 표현 -> 정규식! 흔히말하는 정규표현식은 NSRegularExpression을 사용하구요! 타입이름도 좀더 정규표현식같죠? (같은 패턴으로 NSPredicate를 사용하면 맞는데 틀리다고 나오는경우가 있어요) 문법부터 보면 더 헷갈리기때문에 예제와함께 이해해볼게요 바로바로 확인할 수 있는 실습사이트는 www.regexpal.com Regex Tester - Javascript, PCRE, PH..

iyOmSd/Title: Swift 2021.03.20

[Swift] TTS 텍스트 음성전환 (AVSpeechSynthesizer)

문자를 음성으로 읽어주는 기능을 구현해볼거에요 TTS라고하죠 Text To Speech 쉽게 설명하면 사전에 발음듣기처럼 해당 단어를 말해주는거구요 이번에 사용할 클래스들은 AVFoundation에 있는 AVSpeechSynthesizer AVSpeechUtterance AVSpeechSynthesisVoice 를 사용해볼 거에요 AVSpeechSynthesizer 텍스트로부터 합성된 음성을 생성하고 진행중인 음성을 모니터링 하거나 제어 할 수 있는 객체 읽기가 끝날 때 혹은 취소할 때 해제된다고 하네요 Delegate도 정의되어있는데 Speech start Speech finish Character range will be spoken Speech paused Speech continued 원하는상황에..

iyOmSd/Title: Swift 2021.02.23

[Swift] AVAudioRecord, AVAudioPlayer, AVAudioEngine을 사용한 음성파일 재생, 녹음, 효과음 주기

음성을 다루는 프로젝트를 개발하기 앞서서 관련된 지식들을 공부해보려고 기본적인 음성재생, 음성녹음, 음성효과를 줄 수 있는 기능을 구현해봤어요 엄청 많은 클래스들이 있더라구요 하지만 하나를 알면 다른것들은 대충 어디에쓰일지 감이 와요 ㅎㅎ 이 게시글에서 다룰 타입은 import AVFoundation 을 꼭 해주시구요! AVAudioRecord AVAudioPlayer AVAudioSession AVAudioEngine AVAudioPlayerNode AVAudioFile AVAudioPCMBuffer AVAudioUnitTimePitch AVAudioUnitDistortion AVAudioUnitReverb 엄청많죠? ㅎ... 저도 하면서 엄청 헷갈렷어요.. 음성을 듣기위해서는 샘플음성파일을 직접가져와..

iyOmSd/Title: Swift 2021.02.19

[Swift] CountDown Animation Label 구현

카운트효과를 줄 수 있는 라벨을 만들어 보고싶었어요 그래서 어떻게 줄수 있는지 찾아봤고 아래와같은 2가지로 구현할 수 있을 것 같아요 CATransition An object that provides an animated transition between a layer's states. 레이어의 상태가 변경되면 애니메이션을 제공해주는 역할이죠 CAAnimation을 상속받고 있구요 이름만 봐도 전환효과를 나타내는 녀석같죠? 간단하게 구현하려고 라벨을 생성해주고 버튼을 생성해주고 버튼이 눌리면 아래와같은 효과를 주도록 설정했어요 func makeCATransitionLabel(_ label: UILabel) { let transition = CATransition() transition.duration =..

iyOmSd/Title: Swift 2021.02.11

[Swift] Google AdMob 커스텀 광고달기

진행중인 프로젝트에서 유지비를 충당하고자 광고를 달아 봤는데요 나중에 앱에다가 광고를 달고 많은 수익을 내서 먹고살았으면 좋겠어요 ㅎㅎ 우선 구글 AdMob을 사용해서 광고를 달았는데요 지원하는 광고형식에는 여러가지가 있어요 밑에 다는 배너 전체화면으로 보이는 전면 보상형같이 몇초기다리는 그런 광고 아니면 제맘대로 커스텀 디자인해서 보여줄 수 있는 네이티브 광고 앱의 컨텐츠와 자연스러움을 위해서는 네이티브 광고가 좋죠 이렇게말이죠.. ㅎㅎ 네이티브 광고를 구현하는 것을 해볼 거예요 문서에도 잘 설명되어있지만..! 우선 먼저 iOS14+ 에서는 트레킹에 관한정책이 변경되어서 명시를 해줘야해요 권한을 요청하는 코드를 통해서 if #available(iOS 14, *) { ATTrackingManager.re..

iyOmSd/Title: Swift 2021.01.13

[Swift] 전처리문 #if DEBUG

개발하면서 배포를 하게 되는 상황이 있을수도 있는데 배포버전과 개발버전 설정을 다르게 하고싶은 경우가 있을 수 있어요 광고를 추가할때 개발버전엔 광고 테스트 id를 입력하게 하고 배포버전엔 진짜 id를 입력하고 서버 주소도 마찬가지로 상황에 맞게 적용 시킬 수 있겠죠 사용법은 간단해요 #if DEBUG print("디버그모드일 때(빌드) 실행되는 블럭") #else print("릴리즈모드일 때(배포) 실행되는 블럭") #endif 이런 문법으로 #if 뒤에 사용자의 플레그를 넣어 줄 수 있고 #endif 로 끝나요 PROJECT 혹은 TARGETS > Build Settings > Swift Compiler - Custom Flags에서 설정을 하구요 기본으로 DEBUG는 써있어요 RELEASE부분만 추..

iyOmSd/Title: Swift 2021.01.04

[Swift] DateFormatter 년도차이 YYYY vs yyyy

개발을 하다가 이슈가 생겼는데 년도를 비교하는 로직이고 날짜를 표시하는 기능이었어요 무심코 지나쳐서 흔하게(?) 할 수 있는 실수라고 생각되네요 테스트로 2020년에 개발했던 거라 당연하게 2020년 날짜 데이터도 잘 받았고 2021년 데이터도 했을 때 잘 됐었는데 ... 2021년이 되었어요!! 게시글 작성 시점은 1/2일이구요.. 응?? 2021년 12월 31일... 미래에서 온 게시글이니...? (원래 2020년 12월 31일 게시글) 분명 이 포맷으로 잘 되는 걸 확인했고 그전까지 date와 calendar로그를 찍어서 확인했을 때 년도가 알맞게 잘 나왔는데... 알고보니 YYYY가 문제더라구요 그냥 년도만 나타내는 포맷인줄알고... 아무생각없이 쓰고있어서 몰랐는데 하필 이때 yyyy가 아니였네요..

iyOmSd/Title: Swift 2021.01.02

[Swift] 커스텀 연산자 만들기 (Custom Operator)

+ 와 - 같은 연산자들을 직접 만들어 사용해 볼 거에요 infix: 사이에 연산자가 있는경우 ( 3 + 3 ) prefix: 앞에 연산자가 있는경우 ( ++3 ) postfix: 뒤에 연산자가 있는경우 ( 3++ ) 이 3가지중 하나를 골라서 먼저 정의를 해줘야해요 postfix operator ==== 그리고 연산자에서 중요한게 우선순위가 있어요 +와 *가 같이있다면 *부터 계산되는 그런 우선순위와 (서로다른 우선순위간의 계산) 같은순위의 연산자 -, + 사이에는 어느것 부터 계산되어야하는지도 중요하죠 (같은 우선순위간의 계산) precedencegroup 이라는 키워드를 이용해서 우선순위를 만들어 줄 수 있어요 옵션에는 associativity: 우선순위가 같은 연산자들의 처리 방식으로 left/r..

iyOmSd/Title: Swift 2020.12.31