iyOmSd/Title: Swift 106

[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

[Swift] AVFoundation 카메라 만들어보기(기초)

UIImagePickerController를 이용해서 아주 손쉽게 카메라를 띄우고 사진을 가져오는 방법이 있지만 더 많은 컨트롤을 할 수 있는 AVFoundation을 다뤄서 만들어 보도록할거에여 AVFoundation으로 할 수 있는 것은 카메라, 비디오, 오디오, 녹음, 미디어에셋을 커스텀 하게 만들 수 있어요 간단한 원리라고하면 Device에서 어느 장치를 쓸건지 input을 만들어서 동작하는 Session에 넣어주고 넣은 input이 있으면 그에따른 output도 있겠죠? output도 설정해서 Session에 달아주면 되는식이에요 요약하자면 input, output을 session에 설정한다! 코드로 보면서 이해해볼까요 (간단해서 볼것도 없네요.. ㅎ) class TestCamera: UIVie..

iyOmSd/Title: Swift 2020.12.24

[Swift] Socket 라이브러리 비교 CocoaAsyncSocket vs Socket.IO

대표적인 소켓 라이브러리에요 (아마도..?) 소켓을 사용할 때 원하는 기능을 고려해서 선택해서 쓰면 될것 같아요 소켓이란.. 간단하게 HTTP통신은 클라이언트가 요청을 보내는 경우에만 응답하는 단방향 통신이고 실시간연결이아니라 필요할 때만 통신해서 데이터를 가져오는 방식이죠 소켓은 특정 Port를 통해서 연결을 유지하고 실시간으로 양방향 통신을 할 수 있는 방식이에요 실시간통신에 유리하죠 일반적인 소켓은 TCP/IP, UDP 프로토콜을 이용하지만 웹소켓은 HTTP Layer에서 작동하는 소켓이에요 기본적으로 HTTP(80), HTTPS(443)포트를 사용하구요 웹소켓 프로토콜은 WS, WSS가 있어요 CocoaAsyncSocket Objective-C로 구성되어 있고 GCD기반 비동기 소켓 라이브러리에요..

iyOmSd/Title: Swift 2020.12.23

[Swift] AutoLayout 코드작성방법 (Visual Format Language, NSLayoutAnchor, NSLayoutConstraint)

오토레이아웃을 코드로 작성하는 방법에는 3가지가 존재하는데요 사용법을 공부해보려고해요 같은 레이아웃을 다양한 방법으로 만들어볼건데요 aView(파랑) bView(빨강)이 있고 파란뷰가 좌우 간격 8, 위로20 파란뷰 20 아래에 빨간뷰가 좌우 30 파란뷰, 빨간뷰 모두 크기는 100 간단한 제약사항을 맞춰볼거에요 하기전에 기본 설정은 빼먹으면 안돼요 ㅎㅎ view.addSubview(aView) view.addSubview(bView) aView.translatesAutoresizingMaskIntoConstraints = false bView.translatesAutoresizingMaskIntoConstraints = false aView.backgroundColor = .blue bView.back..

iyOmSd/Title: Swift 2020.11.27

[Swift] Hugging, Resistance

오토레이아웃 관련 프로퍼티인데요 이렇게 기본적으로 가지고 있는속성이에요 이게 뭘까..? 쓸 때가 있을까..? 네 그럼요 ㅎㅎ 우선 이 두개를 알기전에 intrinsicContentSize 를 알고가야해요 파파고: 뷰 자체의 특성만 고려한 수신 뷰의 자연적 크기. 뷰자체의 순수한 크기에요 frame과 뭐가다른가요? intrinsicContentSize는 get-only 프로퍼티라 수정이안돼고 frame은 수정이가능하죠 frame영역을 수정했다고해서 intrinsicContentSize의 값이 달라지지않아요 서로 의존하고 있지않죠 뷰의 본래 사이즈를 알 수 있어요 예시 [leftLabel][rightLabel] 이렇게 존재하고 각 오토레이아웃은 왼쪽 오른쪽 0 으로 같게, 중앙으로 잡았다면 빨간 표시가 뜰거..

iyOmSd/Title: Swift 2020.11.25

[Swift] Optional 옵셔널

스위프트를 공부하면 ? ! 같은 기호들을 보게되죠 이게 뭐냐면 옵셔널이라는 개념인데요 개념을 공부해보고 한번 비슷하게(?) 구현해보려구요 Enum타입이고 값 또는 nil을 wrap한 표현이레요 옵셔널이란 값이 있거나 없을 수도 있는 Enum형(열거형)타입이에요 let shortForm: Int? = Int("42") let longForm: Optional = Int("42") let number: Int? = Optional.some(42) let noNumber: Int? = Optional.none print(noNumber == nil) // Prints "true" Optional 타입을 짧게 T? 로 줄여서 사용할 수 있어요 또한 옵셔널은 Enum타입에 case로 some, none 이 존재해..

iyOmSd/Title: Swift 2020.11.25