[IOS] UserDefault 사용해보기
·
IOS
간단한 예제를 통해 UserDefault를 사용해보고 작성한 코드를 리뷰하는 글입니다. 1. UserDefault란 앱에 대한 사용자의 데이터를 저장하는 애플의 기본 저장소 앱 마다 존재하며 샌드박스 시스템에 의해 관리됨 주로 푸쉬 알람 허용과 같은 사용자의 환경설정 값 등 가벼운 데이터가 저장됨 key-value 쌍의 형태로 데이터가 저장됨 2. 예제 1) 감정 다이어리 9가지 감정을 열거형 case로 정의 열거형의 rawValue를 UserDefault의 key로 사용 화면 로딩 시 감정별로 저장된 value를 읽어서 각 버튼의 타이틀에 보여줌 버튼 터치 시 value+1 을 새로운 값으로 저장하고 버튼 타이틀을 변경 @IBAction func touchButton(_ sender: UIButton..
[IOS] 열거형을 사용해서 간단한 앱 만들어보기
·
IOS
텍스트필드에 단어를 입력하면 단어의 뜻을 보여주는 간단한 앱을 만들면서 작성한 코드를 리뷰하는 글입니다. 1. 레이아웃 검색창(텍스트필드) 높이 = 루트뷰의 0.06배 검색 버튼 아이콘 (돋보기) 크기 SymbolConfiguration large로 설정 검색 창 아래 4개의 해시태그 버튼 각각의 Content Inset을 상하좌우 5 만큼 설정 → default 스타일의 버튼은 내부 글자 사이 여백이 좁아서 답답해보이기 때문에 가장 오른쪽 버튼의 trailing constraint를 최소 20으로 설정 → 버튼의 텍스트가 길어져도 최소한 루트뷰의 trailing보다 20만큼의 간격을 유지 컨테이너 뷰 생성해서 루트뷰 중앙에 위치시키고 좌우 20의 간격 설정, 컨테이너 뷰 높이 = 루트뷰의 0.4배 → ..
[IOS] AutoLayout으로 현업의 서비스 화면 구성하기
·
IOS
오토 레이아웃을 통해 현 서비스의 앱 화면을 만들면서 작성한 코드를 리뷰하는 글입니다. 1. 주문하기 화면 탭바의 첫번째 네비게이션 컨트롤러 배너 높이를 루트 뷰 높이의 0.2배로 설정 음식 카테고리 버튼들을 레이아웃 하기위해 1개의 수직 스택뷰와 4개의 수평 스택뷰 사용 수직 스택뷰 상하좌우에 20의 간격을 주어 수직 스택뷰의 너비와 높이 결정 수평 스택뷰의 높이를 결정하기 위해 수직 스택뷰 distribution을 fill equally 설정 하나의 수평 스택뷰에 4개의 서브뷰(어레인지뷰)가 들어감. 수평 스택뷰 distribution을 fill equally로 설정해서 각 서브뷰의 너비 결정 수평 스택뷰의 서브뷰들 간의 공간은 (spacing) 20 서브뷰(음식 카테고리) 하나의 높이와 너비가 결정..
[IOS] 스플래시 화면과 다크모드 대응 화면 만들기
·
IOS
간단한 앱을 만들면서 정규식, 커스텀 컬러 셋, 스플래시 뷰를 사용했던 경험을 리뷰하는 글입니다. 1. SplashViewController Main 스토리보드의 엔트리 포인트 Lottie 라이브러리를 사용해 애니메이션 재생 (Launch Screen을 안쓴 이유) 애니메이션이 끝나면 segue를 통해 SignUpViewController로 이동 class SplashViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let animationView = AnimationView(asset: "movie") view.addSubview(animationView) animationView.frame = vi..
[Sesac IOS] 10일차 TIL
·
TIL
10일차 수업을 듣고 새로 알게된 점과 공부할 것을 정리한 글입니다. Learned 화면 표시와 전환 (Presentation, Transition) 세그웨이(Segue) : 인터페이스 빌더에서 화면 전환을 담당하는 화살표 iOS에서 사용하는 화면 프레젠테이션 방식은 show와 present modally 2가지가 있다. 그 외 나머지는 아이패드에서 동작하는 방식들이다. show는 네비게이션 컨트롤러에서 정보의 흐름을 따라 화면을 보여주는 역할이고 presnet modally는 팝업 창 처럼 다른 맥락의 정보를 담은 화면을 보여주는 역할이다. 스토리보드로 이전 화면에 돌아가려면 돌아가려는 화면에 unwind 액션 세그를 만들어주고 없애고자 하는 뷰 컨트롤러의 Exit에서 컨트롤과 액션을 연결해줘야한다. ..
[Sesac IOS] 9일차 TIL
·
TIL
9일차 수업을 듣고 새로 알게 된 것과 알고 싶은 것을 정리한 글 입니다. Learned 라이브러리 vs 프레임워크 라이브러리는 개발자가 필요할때마다 단순 활용이 가능한 도구의 모음으로 특정 기능을 모아둔 코드나 함수의 묶음을 의미한다. 프레임워크는 자체적인 구조를 가지고 있어서 개발자는 그 틀(Frame)에 안에서 작업(work)해야한다. 이런 점들 덕분에 프레임워크를 사용하면 체계적으로 프로그램을 관리할 수 있고 원하는 기능을 집중적으로 구현할 수 있다. 둘의 공통점은 개발자가 원하는 기능을 구현하는데 도움을 준다는 점이고, 차이점은 흐름 제어 권한이 누구에게 있느냐이다. 프레임워크는 자체적인 흐름이 있기 때문에 그 안에서 개발을 해야하지만 라이브러리는 개발자가 원할때 사용하고 직접 코드를 제어할 수..
[Sesac IOS] 8일차 TIL
·
TIL
8일차 수업을 듣고 새로 알게된 것과 알고 싶은 것들을 정리한 글입니다. Learned 클래스(Class) 클래스란 함수, 변수를 적절히 조합해서 특정한 기능을 수행하도록 만든 하나의 단위이다. 이런 단위에 이름을 붙여 그 기능이 필요할때 언제든지 사용할 수 있다. 클래스를 사용하는 프로그래밍 방식을 객체 지향 프로그래밍(OOP)이라고 한다. 인스턴스 (Instance) : 클래스를 실제로 사용하기 위해 메모리 공간을 할당받은 객체 상속 (Inheritance) : 한 클래스의 메소드와 프로퍼티를 다른 클래스에게 물려주는 것 아무것도 상속받지 않는 클래스를 기반 클래스(Base Class)라고 한다. 재정의 (Overriding) : 부모에게 물려받은 멤버를 자식 클래스에서 새롭게 정의하는 것 기존의 부..
[Sesac IOS] 7일차 TIL
·
TIL
7일차 수업을 듣고 새로 알게된 점과 알고싶은 점을 정리한 글입니다. Learned Content Hugging Priorty와 Content Compression Resistance 두 개 이상의 뷰 객체 사이에서 레이아웃을 설정할때 사용하는 속성들이다. 내부 텍스트에 따라 고유 사이즈를 가지는 두 개의 UILable 사이에 레이아웃을 설정한다고 가정하면 상대적으로 우선순위가 높은 레이블이 자신의 고유 사이즈를 유지한다. Hugging은 크기가 늘어나야 하는 상황에서 어떤 뷰가 늘어날지 결정하고, Compression은 크기가 줄어들어야 하는 상황에서 어떤 뷰가 줄어들지 결정한다. 이 값들은 기본적으로 250, 750, 1000 같은 정수를 기준으로 정해져있다. 코드로만 사용할 수 있는 뷰 컨트롤러들이..
[Sesac IOS] 6일차 TIL
·
TIL
6일차 수업을 듣고 새로 알게된 내용과 알아보고 싶은 내용을 정리한 글입니다. Learned 프로젝트 세팅 → Build Phases 에서 스위프트 파일, 에셋같은 소스 파일이 잘 등록됐는지 확인할 수 있다. 디바이스의 크기에 따른 폰트 크기 대응은 일반적으로 잘 안하는 편 Alpha vs Opacity 둘 다 투명도를 조절하는 속성이나 특징이 다르다. Alpha는 수퍼뷰 내부의 모든 서브뷰의 투명도에 영향을 준다. Opacity는 자기 자신의 뷰에만 영향을 준다. Asset의 Render as : Original Image vs Template Image 에셋으로 등록한 이미지를 렌더링하는 방식의 차이를 의미한다. 오리지널은 말 그대로 이미지의 원본 컬러를 그대로 사용해서 렌더링한다. 템플릿은 이미지의..
[Sesac IOS] 5일차 TIL
·
TIL
5일차 수업을 듣고 새로 배우게된 것과 더 알아보고 싶은 것을 정리한 글입니다. Learned Git VCS(Version Control System)의 일종으로 소스코드나 파일의 변경 사항을 버전별로 저장해놓고, 필요할때 불러올 수 있는 시스템 코드의 변경 사항과 작업한 사람 등을 추적할 수 있어서 협업 시 효과적으로 코드를 관리하고 여러 사람들과 동기화할 수 있다. 특정 시점으로 롤백이 가능해서 자유롭게 테스트를 하거나 새로운 기능을 개발할 수 있고 문제의 원인을 파악 및 해결하는데 편리하다. GitHub 로컬 저장소를 클라우드 시스템을 통해 원격으로 저장할 수 있게 해주는 서비스 코드를 백업하거나 다른 사람들과 공유하기 위해 사용한다. Working Directory Git이 관리 중인 파일들이 존..