본문 바로가기

iOS111

#3 Understanding SwiftUI 선언형 프로그래밍 와 데이터 의존성 알아보고 어떻게 앱 디자인을 다르게 생각할 수 있을지 배운다. 왜 SwiftUI IB의 단점 Interface Builder와 스토리보드는 앱을 빠르게 만드는데 있어 많은 도움이 되었고 적응형 유저 인터페이스와 네이게이션을 위한 segues를 세팅하는걸 쉽게 만들어 주었다. 하지만 많은 개발자들은 view를 코드로 작성하고 싶어했고 왜냐하면 UI 를 코드로 작성했을 때 더 효과적으로 복사하거나 편집을 할 수 있기 때문 대부분 IB 와 스토리보드는 내부적으로 코드들이 적용되어 IBAction 이나 IBOutlet 을 코드에서 지우거나 이름을 수정했을 때 앱이 크래쉬나는걸 볼 수 있었다. (왜냐하면 IB는 코드의 변화를 보지 못하기 때문이다.) segues의 경우도 문자열.. 2020. 10. 19.
#2 SwiftUI Getting Started SwiftUI Project 생성시 LifeCycle 선택 UIKit 이랑 SwiftUI 차이점?? SceneDelegate in SwiftUI SceneDelegate 는 그 자체로 SwiftUI 전용이 아니다. 아래 코드가 SwiftUI를 위한 viewController를 만들어준다. if let windowScene = scene as? UIWindowScene { let window = UIWindow(windowScene: windowScene) window.rootViewController = UIHostingController(rootView: contentView) self.window = window window.makeKeyAndVisible() } UIHostingController .. 2020. 10. 19.
Introducing PencilKit [WWDC2019 Introducing Pencilkit] Introducing PencilKit - WWDC 2019 - Videos - Apple Developer Meet PencilKit, Apple's feature-rich drawing and annotation framework. With just a few lines of code, you can add a full drawing... developer.apple.com 애플펜슬 펜슬은 아이패드의 가장 특별한 기능이다. 아이패드 미니부터 프로까지 사용할 수 있고 정밀한 작업이 필요한 곳 어디나 사용할 수 있다. iOS13 에서 추가된 것 낮은 지연(latency) 새로운 팔레트 툴 펜슬킷 Markup Everywhere 목차 Great p.. 2020. 9. 29.
Github을 이용한 iOS 개발 협업 기초 (PR,코드리뷰,Merge) 드림인 프로젝트를 통해 iOS 개발을 동료와 함께 개발하게 되었습니다. 드림인 프로젝트의 경우 UI/UX/Coding 파트 모두가 개발을 해야 하기 때문에 협업이 요구됩니다. 그래서 간단하게 Github를 통해 어떻게 협업해야 할지 모르는 분들을 위해 작성했습니다. 잘 아시는 분은 살포시 뒤로가기를 눌러주세요. 부끄럽거든요. 협업 상황 두명의 개발자가 있습니다. 피카츄와 라이츄로 이름짓겠습니다. 피카츄는 로그인 화면과 로직을 구현해야 합니다. 라이츄는 회원가입 화면과 로직을 구현해야 합니다. 각각의 구현해야 하는 기능은 Github Issue 로 등록되어 있습니다. 둘은 같은 Xcode 프로젝트에서 동시에 작업합니다. Github 에 리포지토리와 빈 깡통 Xcode 프로젝트가 있습니다. Github De.. 2020. 9. 9.
Appstore Connect 앱 리젝 이의신청 저번에 심사올린 앱이 리젝되었다. 아니 근데 iPhone 용 앱으로 올렸는데 아이패드로도 체크를 하신다. 크게 이유는 두가지 1. 검색기능 버그있는듯 We discovered one or more bugs in your app when reviewed on iPad running iOS 13.7 on Wi-Fi. Specifically, 검색하기 feature did not work. 무슨 소리지 나 테스트 엄청 했는데?! 싶었다. 혹시나 해서 내 아이패드에 깔아서 테스트 해봤으나 기능엔 문제가 없다. 생각되기론 "주식" 키워드의 경우 아직 우리 디비에 주식에 대한 데이터가 없어서 검색결과가 없는게 맞는데 아무런 결과가 없는 걸 버그로 생각하신 것 같다. 2. 생년월일이랑 성별은 왜 수집함? We not.. 2020. 9. 5.
DSC 모집합니다. 2020. 9. 4.
앱 심사 드디어 올렸다 2020. 9. 4.
🎥 iOS 비디오에 Overlay와 Animation 추가하기 이전 포스팅 🎥 iOS 비디오 재생, 녹화, 병합 튜토리얼 (2) 이전 포스팅 🎥 iOS 비디오 재생, 녹화, 병합 튜토리얼 (1) [출처] How to Play, Record and Merge Videos in iOS and Swift Learn the basics of working with videos on iOS with AV Foundation in this tutori.. haningya.tistory.com 참고자료 AVFoundation Tutorial: Adding Overlays and Animations to Videos In this AVFoundation tutorial, you’ll learn how to add overlays and animations to videos, by.. 2020. 9. 2.
🎥 iOS 비디오 재생, 녹화, 병합 튜토리얼 (2) 이전 포스팅 🎥 iOS 비디오 재생, 녹화, 병합 튜토리얼 (1) [출처] How to Play, Record and Merge Videos in iOS and Swift Learn the basics of working with videos on iOS with AV Foundation in this tutorial. You’ll play, record and even do some light video ed.. haningya.tistory.com 출처 How to Play, Record and Merge Videos in iOS and Swift Learn the basics of working with videos on iOS with AV Foundation in this tutorial. Yo.. 2020. 9. 1.
🔎 App Store Connect 에 앱을 다시 올려보자 + TestFlight 사용법 이전 포스팅 🔎 App Store Connect 에 앱을 올려보자 개발자 계정도 구매 했고 앱 버전 1도 완성되었다. 이제 App Store Connect 에 앱을 올려보자. #1 앱스토어 커넥트에 접속한다. appstoreconnect.apple.com/apps https://appstoreconnect.apple.com/login?target.. haningya.tistory.com 1차 TestFlight 알파테스트 결과 아이폰8 이나 SE2에서 개똥같이 나오는 화면이 있었다. 여튼 짜잘한 수정을 다하고 다시 아카이브를 올려보겠다. 다시 아카이브를 하여 커넥트에 올릴때 주의할 점이 딱 한가지 있다. Version 과 Build 가 기존의 아카이브 파일과 달라야 한다 저번에 올린게 Version 1 .. 2020. 8. 31.
🎥 iOS 비디오 재생, 녹화, 병합 튜토리얼 (1) [출처] How to Play, Record and Merge Videos in iOS and Swift Learn the basics of working with videos on iOS with AV Foundation in this tutorial. You’ll play, record and even do some light video editing! www.raywenderlich.com 목표 비디오 선택 후 재생 비디오 녹화 후 저장 비디오 합치기 기본화면구성 버튼3개 stackview 로 그냥 감쌈 vertical, horizontal center 재생할 비디오 목록에서 선택 import AVKit import MobileCoreServices AVKit: AVPlayer에 접근할 수 있음(선.. 2020. 8. 31.
iOS 영상편집 앱 개발을 위한 레퍼런스 모음 목표: 애플 펜슬을 이용한 영상편집앱 (자세한 내용은 비밀 쉿) 비디오 재생 비디오 편집 비디오 위에 레이어 추가 후 병합 인코딩 레이어에 애플펜슬로 드로잉 키워드 AvFoundation CoreMedia PencilKit UIVideoEditorController AVKit 레퍼런스 - Video https://www.raywenderlich.com/6236502-avfoundation-tutorial-adding-overlays-and-animations-to-videos AVFoundation Tutorial: Adding Overlays and Animations to Videos In this AVFoundation tutorial, you’ll learn how to add overlays a.. 2020. 8. 30.
Design Pattern - Adapter Pattern Adapter Pattern Adapter pattern은 행위 패턴으로 상호 호환이 안되는 타입을 연결해 주는 패턴이다. 4개의 부분이 있다. Adapter를 사용하는 객체: 새로운 프로토콜에 의존하는 객체 새로운 프로토콜: 사용을 위해 필요한 프로토콜 legacy Object: 프로토콜이 만들어 지기 전에 원래 있던 객체, 수정될 수 없고 직접적으로 integrate 할 수 없는 객체 Adapter: 프로토콜을 준수하면서 legacy object 와 상호작용 하기 위해 만들어진 객체 실물의 어댑터의 가장 좋은 예시는 아이폰이다. 3.5mm 헤드폰 단자가 없어서 어댑터를 통해 라이트닝 단자에 연결해야 한다. 두개의 요소를 알맞게 연결해 주는 것이 Adapter Pattern 의 핵심이다. 안드로이드에서.. 2020. 8. 30.
🔎 App Store Connect 에 앱을 올려보자 개발자 계정도 구매 했고 앱 버전 1도 완성되었다. 이제 App Store Connect 에 앱을 올려보자. #1 앱스토어 커넥트에 접속한다. appstoreconnect.apple.com/apps https://appstoreconnect.apple.com/login?targetUrl=%2Fapps&authResult=FAILED appstoreconnect.apple.com #2 + 클릭해 앱을 추가 #3 아래 정보를 다 채운다. 그전에 Bundle ID가 없어서 하나 만들겠다. "인증서, 식별자 및 프로파일에서 새 번들 ID를 등록하십시오" 를 클릭한다. 그럼 아래와 같은 화면이 나오는데 여기서 Back 을 누른다. 그리고 다시 나온 화면에서 Identifiers + 버튼을 누른다. 앱 아이디로 설.. 2020. 8. 29.
iOS 앱 이름 한국어 설정 아무 생각없이 Xcode 의 Display Name 을 한글로 적었다 에러가 났다. 에러 내용 링크: http://codershigh.dscloud.biz:30004/t/simulator-this-app-could-not-be-installed/258 info.plist 에 관한 오류인거 같아서 한참을 헤맸는데 그냥 Display 이름을 영어로 바꿔주니 해결되었다. 이 참에 한국어로 현지화 하는 방법을 간단하게 정리해본다. Xcode 에서 Project -> Localizations 로 이동 + 버튼으로 Korean 추가 추가된거 확인할 수 있다. (Main 과 LaunchScreen) 우리는 Info.plist 에 대한 strings 파일을 만들어 줘야한다. 파일 이름은 : InfoPlist.strin.. 2020. 8. 29.
[Alamofire_5] 이미지 업로드 예제 코드 개발하는 앱에서 이미지 업로드가 있었다. Alamofire 4로 구현해봤는데 Alamofire 5 에서 많이 달라진것 같다. 메모해놔야겠다. Alamofire 4 코드 func updateProfileImage(_ image : UIImage){ let parameters: Parameters = [ "token" : UserDefaults.standard.string(forKey: "userToken") ?? "", "uuid" : UIDevice.current.identifierForVendor?.uuidString.lowercased() ?? "" ] let imageData = image.jpegData(compressionQuality: 1)! // Start Alamofire Alamofire.. 2020. 8. 28.
🖋 Figma 프로토타입 완성 하루 쬐애애앵일 프로토타입 만들었다. 처음 한 것 치고 만족한다. 아는 디자이너 형한테 보여줬다가 무슨 짓이냐고 ㅋㅋㅋㅋ [여기서 써볼 수 있다.] Figma Created with Figma www.figma.com [전체뷰] Figma Created with Figma www.figma.com 느낀점 모양을 만드는 건 쉽지만 UI 요소들을 그룹화 하고 재사용 가능하게 모듈화 시켜서 정리하는 건 힘들다. 막 보이는 대로 만들었기 때문에 나중에 개발하려고 constraint 를 찝었을 때 개판나있을 수 있다. 여백이 제각각이다. 눈에 보이는 데로 여백을 줘서 자세히 보면 안맞을 수 있다. 생각보다 피그마 툴 사용하기는 쉬우나 완성도 있게 작업하기 힘들 것 같다. iOS에서 사용되는 기본적인 디자인 요소들.. 2020. 8. 26.
프로토타이핑 - 개발자의 좌충우돌 Figma 기초 사용법 피그마 가입 -생략- 터치패드가 아닌 마우스를 쓸 경우 command + scroll : 화면 확대, 축소 space + 드래그 : 화면 이동 피그마 프로젝트 만들기 우측 상단에 + 아이콘 클릭 아이폰 디바이스 별 규격에 맞는 바탕 추가 왼쪽 상단 # 모양 클릭 (단축키: A) 그러면 우측에 디자인 탭에 Phone 기종별로 나옴 원하는 기종 클릭 디바이스 사이즈에 맞는 빈 바탕 확인 도형추가 왼쪽 상단 O 모양 클릭 (단축키: O) 원모양 클릭( 단축기 O ) Shift 누르면 정 다각형으로 배치할 수 있음 도형 색상 바꾸기 왼쪽 하단 Fill 항목 네모난 색 클릭하면 색상 템플릿 열림 또는 HEX값으로 색상 지정 옆의 %는 투명도 도형 색상 그라데이션 넣기 개발자가 싫어하는 그라데이션은 색상 템플릿에서.. 2020. 8. 25.
Design Pattern - Factory Pattern Factory Pattern 팩토리 패턴은 creation pattern으로 객체를 만들때 creation logic을 노출하지 않고 만들 수 있는 기법이다. 팩토리 패턴은 두가지 타입이 있다. Factory: object 를 만드는 역할 Product: 만들어진 객체들 정확하게는 이 패턴은 여러가지 하위 종료가 있는데 예를들어 simple factory, abstract factory 등이 있다. 하지만 이것들은 한가지 공통의 목표인 객체 생성 로직을 분리시켜 자체 구성 내에 있도록 하는 것이다 Factory Pattern 은 언제 사용해야 할까? 제품 생성 로직을 분리하고 싶을때 (소비자가 직접 제품을 생산하는게 아닌) 같은 프로토콜을 준수하는 여러개의 연관된 subclasses이나 objects을 .. 2020. 8. 25.
[앱 기획] Sandbox 목표 샌드박스 도입 이유를 이해한다. 샌드박스 환경에서의 제약사항들을 안다. iOS 는 보안으로 유명하다. 백그라운드 프로세스를 적극적으로 관리함 샌드박스 때문 Unix chroot로 실행할 수 있는데 이렇게 실행하면 본인이 포함되어 있는 폴더를 root 폴더로 인식한다. 샌드박스란 Folder와 같은 뜻으로 root directory를 뜻한다. 결국 어플리케이션은 본인이 루트 디렉토리이기 때문에 상위 디렉토리에 대한 정보가 1도 없게된다. 이거때매 조금 화났던게 아이폰에 음악이나 동영상 넣을때 iTunes 로 특정 앱에다가 집어 넣어야 했다. 드디어 이유를 알았다. 제 아무리 빈폴더 만들어서 넣어도 음악 동영상 앱에서는 파일이 없다고 뜨더니 샌드박스 때문이였다. chroot Jail 때문에 아이폰 해킹.. 2020. 8. 24.
[앱기획] 멀티태스킹 목표 Application Background Process 의 차이점을 안다. iOS 멀티 태스킹 환경의 배경을 이해한다. iOS 멀티 태스킹 종류를 안다. Unix iOS 는 Unix기반의 운영체제이다. 주로 서버를 돌리는 OS이다. 만들수 잇는 프로그램은 크게 두가지로 Application Background Process (Agent, Demon 과 같은 UI 없는 프로그램) iOS 에서는 Background process 를 허용해 주지 않는다. 그로인에 제약되는 상황이 있다. 예를들어 소켓을 열어놓고 계속 listen 하는 상황(메신저 앱 같은것) 왜 Background Process 막았늬? 보안 : 뒤에서 사부작 되는 악성 프로그램 방지 CPU, 메모리, 배터리가 부족한 모바일 환경에서 사.. 2020. 8. 24.