iyOmSd/Title: Swift 91

[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

[Swift] Notification Center, Notification Queue

Notification Center의 post는 동기적으로 동작하죠 post a post b 를 했다면 a의 옵저버함수가 끝날때까지 b를 실행하지 않아요 옵저버함수가 실행이 오래걸린다면 마냥 기다릴순 없으니..! 비동기적인 API가 있는데요 바로바로 Notification Queue!! 가 있는데 한번 사용해보려구요 ㅎㅎ Notification Center의 버퍼다! 다른건 아니고 NotificationCenter에 들어오는 post를 관리해주는거라고생각해요 이벤트 등록을 할때 Notification Center를 이용해서 옵저버를 등록하거든요 ㅎㅎ 기본적인 사용법은 let center = NotificationCenter.default let queue = NotificationQueue.default..

iyOmSd/Title: Swift 2020.11.20

[Swift] Fastlane 자동화빌드 배포 CI/CD (2/2)

GitHub Action 코드를 작성, 테스트 및 배포하세요. 코드 검토, 지점 관리, 발행 트리징 작업 등을 원하는 방식으로 만드세요 자동화 프로세스를 만들 수 있어요 잘 모르겟으니 우선 제안해주는 swift용 workflow를 만들어볼게요 이렇게 생겻구요 on: 동작 알림받을 조건 (레포지토리에 푸시가되는 브렌치나 풀리퀘가 되는 브렌치기준) jobs: 수행할 동작을 설정해주는거에요 build: 작업이름 runs-on: 환경 steps: 동작수행목록 uses: 이미만들어진 action사용할때(GitAPI) name: 수행목록이름 run: 수행명령어 on의 이벤트 종류는 docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigg..

iyOmSd/Title: Swift 2020.11.19

[Swift] Fastlane 자동화빌드 배포 CI/CD (1/2)

CI / CD 어디선가 들어본적 있으신가요?? 이게무슨뜻일까요? CI (Continuous Integration) (빌드 테스트를 실시하는 프로세스) 통합 프로세스를 지속적으로 실시해주는거에요 CD (Continuous Deploy 혹은 Continuous Delivery) 프로덕션 환경으로 배포작업을 자동화하는것 앱에 적용한 변경사항이 버그 테스트를 거쳐 레포에 자동으로 업로드되고 언제든 실시간으로 배포가능 변경사항의 배포에 대한 비용 시간 위험을 줄일수 있어요 iOS앱을 배포하는 과정을 따라가보면 이게 왜 필요한지 필요성을 느낄수 있어요 저도 필요성을 너무 느껴서 글을쓰면서 처음으로 적용해보려구요 ㅎㅎ iOS앱 배포과정은 앱을 아카이브를 해요 - 아카이브하는 시간 앱을 앱컨넥트에 업로드하고 - 배포시..

iyOmSd/Title: Swift 2020.11.19

[Swift] Custom View 만들기

자신만의 뷰를 만드는 방법엔 2가지가 있어요 만들어놓고 가져다 쓰기 좋기 위함이죠! 1. Xib를 이용 2. 오로지 코드로만 작성 Xib이용 Xib이란 Xcode Interface Builder의 약자로 Nib 파일을 XML형식으로 변환한 파일이에요 XML로 이루어져있어서 소스코드를 좀 더 알아보기 편하겠죠 Nib를 사용하다가 추후에 나오게된 형식이죠 Nib이란 NeXTSTEP Interface Builder의 약자로 바이너리 형식의 파일이에요 유저 인터페이스를 저장하고 처리속도가 빨라요 Xib파일을 빌드하면 Nib으로 컴파일되고 그 파일을 배포하는 식이에요 Tableview나 CollectionView의 Cell을 Xib파일로 만드는 예시가 제일 쉬운 예시가 되겠네요 같은이름으로 Xib, Swift파일..

iyOmSd/Title: Swift 2020.11.12

[Swift] iOS 프레임워크 구조

iOS의 기본적인 구조는 이렇게 이루어져있어요 각 계층별로 하나하나 살펴볼게요 우선 최상위에 Cocoa / Cocoa Touch 가있는데 차이가뭘까요?? Cocoa라는 단어가 붙으면 우선 Objective-C Runtime을 기반으로 NSObject를 상속 받는 모든 클래스, 모든 객체를 가리킬 때 사용 하는 단어구요 Cocoa Framework는 Foundation, AppKit 프레임워크를 포함하고 macOS를 개발할 때 사용하는 프레임워크에요 Cocoa Touch Framework는 Cocoa가 붙었죠? 위에서 설명한거에 더해서 앱의 다양한 기능구현에 필요한 다양한 핵심프레임워크(UIKit, Foundation, CoreData, CoreAnimation…등)을 포함하는 최상위 레벨 프레임 워크에요..

iyOmSd/Title: Swift 2020.11.11