전체 글

전체 글

    [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

    10일차 수업을 듣고 새로 알게된 점과 공부할 것을 정리한 글입니다. Learned 화면 표시와 전환 (Presentation, Transition) 세그웨이(Segue) : 인터페이스 빌더에서 화면 전환을 담당하는 화살표 iOS에서 사용하는 화면 프레젠테이션 방식은 show와 present modally 2가지가 있다. 그 외 나머지는 아이패드에서 동작하는 방식들이다. show는 네비게이션 컨트롤러에서 정보의 흐름을 따라 화면을 보여주는 역할이고 presnet modally는 팝업 창 처럼 다른 맥락의 정보를 담은 화면을 보여주는 역할이다. 스토리보드로 이전 화면에 돌아가려면 돌아가려는 화면에 unwind 액션 세그를 만들어주고 없애고자 하는 뷰 컨트롤러의 Exit에서 컨트롤과 액션을 연결해줘야한다. ..

    [Sesac IOS] 9일차 TIL

    9일차 수업을 듣고 새로 알게 된 것과 알고 싶은 것을 정리한 글 입니다. Learned 라이브러리 vs 프레임워크 라이브러리는 개발자가 필요할때마다 단순 활용이 가능한 도구의 모음으로 특정 기능을 모아둔 코드나 함수의 묶음을 의미한다. 프레임워크는 자체적인 구조를 가지고 있어서 개발자는 그 틀(Frame)에 안에서 작업(work)해야한다. 이런 점들 덕분에 프레임워크를 사용하면 체계적으로 프로그램을 관리할 수 있고 원하는 기능을 집중적으로 구현할 수 있다. 둘의 공통점은 개발자가 원하는 기능을 구현하는데 도움을 준다는 점이고, 차이점은 흐름 제어 권한이 누구에게 있느냐이다. 프레임워크는 자체적인 흐름이 있기 때문에 그 안에서 개발을 해야하지만 라이브러리는 개발자가 원할때 사용하고 직접 코드를 제어할 수..

    [Sesac IOS] 8일차 TIL

    8일차 수업을 듣고 새로 알게된 것과 알고 싶은 것들을 정리한 글입니다. Learned 클래스(Class) 클래스란 함수, 변수를 적절히 조합해서 특정한 기능을 수행하도록 만든 하나의 단위이다. 이런 단위에 이름을 붙여 그 기능이 필요할때 언제든지 사용할 수 있다. 클래스를 사용하는 프로그래밍 방식을 객체 지향 프로그래밍(OOP)이라고 한다. 인스턴스 (Instance) : 클래스를 실제로 사용하기 위해 메모리 공간을 할당받은 객체 상속 (Inheritance) : 한 클래스의 메소드와 프로퍼티를 다른 클래스에게 물려주는 것 아무것도 상속받지 않는 클래스를 기반 클래스(Base Class)라고 한다. 재정의 (Overriding) : 부모에게 물려받은 멤버를 자식 클래스에서 새롭게 정의하는 것 기존의 부..

    [Sesac IOS] 7일차 TIL

    7일차 수업을 듣고 새로 알게된 점과 알고싶은 점을 정리한 글입니다. Learned Content Hugging Priorty와 Content Compression Resistance 두 개 이상의 뷰 객체 사이에서 레이아웃을 설정할때 사용하는 속성들이다. 내부 텍스트에 따라 고유 사이즈를 가지는 두 개의 UILable 사이에 레이아웃을 설정한다고 가정하면 상대적으로 우선순위가 높은 레이블이 자신의 고유 사이즈를 유지한다. Hugging은 크기가 늘어나야 하는 상황에서 어떤 뷰가 늘어날지 결정하고, Compression은 크기가 줄어들어야 하는 상황에서 어떤 뷰가 줄어들지 결정한다. 이 값들은 기본적으로 250, 750, 1000 같은 정수를 기준으로 정해져있다. 코드로만 사용할 수 있는 뷰 컨트롤러들이..

    [Sesac IOS] 6일차 TIL

    6일차 수업을 듣고 새로 알게된 내용과 알아보고 싶은 내용을 정리한 글입니다. Learned 프로젝트 세팅 → Build Phases 에서 스위프트 파일, 에셋같은 소스 파일이 잘 등록됐는지 확인할 수 있다. 디바이스의 크기에 따른 폰트 크기 대응은 일반적으로 잘 안하는 편 Alpha vs Opacity 둘 다 투명도를 조절하는 속성이나 특징이 다르다. Alpha는 수퍼뷰 내부의 모든 서브뷰의 투명도에 영향을 준다. Opacity는 자기 자신의 뷰에만 영향을 준다. Asset의 Render as : Original Image vs Template Image 에셋으로 등록한 이미지를 렌더링하는 방식의 차이를 의미한다. 오리지널은 말 그대로 이미지의 원본 컬러를 그대로 사용해서 렌더링한다. 템플릿은 이미지의..

    [Sesac IOS] 5일차 TIL

    5일차 수업을 듣고 새로 배우게된 것과 더 알아보고 싶은 것을 정리한 글입니다. Learned Git VCS(Version Control System)의 일종으로 소스코드나 파일의 변경 사항을 버전별로 저장해놓고, 필요할때 불러올 수 있는 시스템 코드의 변경 사항과 작업한 사람 등을 추적할 수 있어서 협업 시 효과적으로 코드를 관리하고 여러 사람들과 동기화할 수 있다. 특정 시점으로 롤백이 가능해서 자유롭게 테스트를 하거나 새로운 기능을 개발할 수 있고 문제의 원인을 파악 및 해결하는데 편리하다. GitHub 로컬 저장소를 클라우드 시스템을 통해 원격으로 저장할 수 있게 해주는 서비스 코드를 백업하거나 다른 사람들과 공유하기 위해 사용한다. Working Directory Git이 관리 중인 파일들이 존..

    [Sesac IOS] 4일차 TIL

    4일차 수업을 듣고 배우게된 것과 알고싶은 점을 정리한 글입니다. Learned 에디터 영역의 Assistant(Ctr + Opt + Cmd + Enter)는 선택된 스토리보드의 뷰 컨트롤러와 연결된 클래스 파일을 화면 분할로 보여주는 기능이다. UIKit 프레임워크 내부에 Foundation 프레임워크가 존재해서 UIKit만 import하면 두 프레임워크를 모두 사용할 수 있다. Swift에서 Int를 사용할때 기기의 사양에 따라 자동으로 비트 수(32, 64)를 설정하여 변환해준다. (대부분의 기기가 64비트 Int를 사용) background의 default 컬러는 색이 존재하지 않는 상태, 즉 backgroundColor 프로퍼티가 nil인 상태를 말한다. UIGestureRecognizer를 추..

    [Sesac IOS] 3일차 TIL

    3일차 수업을 듣고 새로 알게된 내용과 공부해야할 것들을 정리한 글입니다. Learned 앱 상태의 종류 Not Running : 앱이 실행되기 전 상태, 아직 메모리에 올라가지 않음 Active : 앱이 화면에서 실행중인 상태 Inactive : 앱이 화면에서 실행중이나 어떤 이벤트도 받지 못하는 상태 Background : 앱이 화면에 보이지 않지만 일부 코드를 실행하고 있는 상태 Suspend : 앱이 곧 종료될 상태 Active와 Inactive 상태를 묶어서 foreground 상태라고 부른다. AppDelegate와 SceneDelegate iOS 13 이전까지는 AppDelegate.swift 파일에서 앱의 생명 주기와 UI의 라이프 사이클을 모두 관리했다. iOS 13부터 iPadOS가 등..

    [프로그래머스] 도둑질

    https://school.programmers.co.kr/learn/courses/30/lessons/42897 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결 아이디어를 떠올리기 어려웠던 DP 문제이다. 다른 사람의 풀이를 참고 했는데 경우의 수를 나눠서 복잡한 문제를 단순히 만드는게 풀이의 핵심이었다. N개의 집이 있는 한 마을을 도둑이 털 계획을 하고 있다. 단, 각 집은 원형으로 이어져 있으며 집을 털때 서로 인접해 있는 두 개의 집을 털 수 없다. 각 집마다 털 수 있는 돈이 배열로 주어졌을때 도둑이 이 마을에서 털 수 있는 금액의 최대값을..