본문 바로가기

분류 전체보기

(257)
[iOS] UISegmentedControl 탐구하기 | 세그먼트 컨트롤 커스텀 #1 안녕하세요. 이번 포스트는 세그먼트 컨트롤의 사용 방법과 커스텀을 소개하려고 합니다. 세그먼트 컨트롤은 items 개수에 따라 width가 같은 segment들이 있습니다. class ViewController { let segment = UISegmentedControl(items: ["Cherry Page", "Orange Page"]) override func viewDidLoad() { super.viewDidLoad() view.addSubivew(segemnt) NSLayoutConstraint.active([ segment.leadingAnchor.constraint(equalTo: view.leadingAnchor), segment.topAnchor.constraint(equalTo: vi..
[iOS] 뷰 컨트롤러 강한 참조 발생 경험와 해결 방법. Strong reference closure | ARC 진짜 뿌수기 #1 안녕하세요: ] 이번 포스트는 ARC와 RC(retain count), strong reference cycle에 대한 간단한 개념을 정리할 것입니다. 포스트의 후반부에는 제가 실제로 개발하며 때 런타임 때 viewController, coordinator와 navigation controller, closuer의 관계에서 발생된 strong referency cycle! 이슈관련해서 메모리가 증가됬던 경험과 해결 방법을 소개하려고 합니다 +_+ ARC와 RC란?! ARC와 RC를 탐구하기 전에 간단히 값 타입(Value type)과 참조 타입(Reference type)을 비교해보려고 합니다. Value type vs Reference type Swift는 크게 값(value)타입과 참조(refere..
[iOS] xcode pbxproj 충돌. pbxproj merge confilt를 자동으로 할 경우 문제와 해결 방법 파해치기!!! | # 자동 병합?! 안녕하세요. 이번 포스트에선 xcode 프로젝트에서 실행버튼이 막혔을 때, 그리고 pbxproj 자동 병합의 장 단점에 대해 소개하려고 합니다. xcode 실행 버튼이 안열리는 이유 위 사진은 협업하다보면 자주 일어날 수 있습니다. 아니면 서로 다른 브랜치에서 혼자 만들었던 파일을 막 수정하거나 삭제한 후에 서로 다른 브랜치를 합칠 경우에도 발생될 수 있습니다. 이 경우는 pbxproj 파일 내부 코드에서 깃 충돌이 났을 때, 병합 충돌을 표시해주기 위해 추가적으로 삽입되는 코드들 때문에 실행이 안되는 것입니다. 이 충돌을 해결하기 위해선 위와 같은 경로로 들어가서 project.pbxproj 파일의 코드를 수정하면 됩니다. ( 깃허브에서 제시한 충돌 내용을 제거하면 됩니다. ) 이렇게 충돌이 난 이유 ..
[iOS] 컬랙션 뷰 Flow -> Compositional layout으로 리펙터링하기 #1 안녕하세요. 이번 포스트에서 컬랙션 뷰 flow layout으로 구현했던 기존 여행 앱 피드 화면을 compositional layout으로 리빌딩한 경험을 공유하려고 합니다: ] 리빌딩을 하게된 이유 왼쪽 동영상은 기존에 구현했던 화면입니다. 그리고 디자이너분이 새롭게 오른쪽 동영상처럼 더 이쁜 디자인을 만들어 주셨습니다. 피드 홈에서는 사용자의 여행 후기를 보여주는 포스트 cell로 이루어진 컬랙션 뷰로 위 화면이 구성되어있는데 기존 구현은 컬랙션 뷰의 flow layout을 이용했습니다. TableView vs CollectionView 선택 과정.. 피드의 cell 구성입니다. 컬랙션 뷰를 선택한 이유는 cell의 높이가 서로 다르기 때문입니다. (초기에는 thumbnail 영역 뷰 높이 또한 이..
[iOS] super 클래스에서 발생되는 delegate! sub class의 delegate로 한번에 처리하기 | Base view #1 안녕하세요. 벌써 수확의 계절이 왔네요. (전 이제부터 시작인데,,🌻 ㅎㅎ) 요즘은 앱 개발을 할 때 어떻게 공통적인 코드들을 줄일 수 있고 쉽게 활용할 수 있을지를 고민하며 개발을 합니다. 오늘은 view 타입의 Base(super) class에서 선언한 delegate와, base class를 상속받은 sub class에서 어떻게 sub class에서 추가적으로 발생하는 또 다른 delegate를 super class의 delegate와 같이 sub class의 한 개의 프로퍼티에서 수행할 수 있는지 해결 과정을 글로 작성하려고 합니다: ] 공통 뷰와 BaseDelegate를 구현하게 된 상황 지금 개발중인 "여행을 가다" 앱에서는 위와 같은 컴포넌트들이 있습니다. 제가 생각했을 때 이 사진에서 공통..
[Github/협업] Github Project로 해야할 개발 todo list를 편하게 관리하기!!! #1 안녕하세요. 이번 포스트는 Github 카테고리에 있는 Project 탭을 통해 프로젝트에서 개발 tasks의 to do list를 정하고 풀리퀘 할 때, 이슈를 기반으로 todo list를 연동해 작업들의 수행 상태를 다루는 방법을 공유하려고 합니다: ) 저는 기존에 협업 시 개발해야 할 요구사항 todo list를 팀원과 같이 노션에 정리 해왔습니다. 그리고 지금 작업중인 개발 진행 상황을 notion의 간트 차트를 통해 서로의 개발 작업 상황을 팀원과 공유했었습니다. 이 경우 좋은 점은 서로가 하고 있는 업무를 공유할 수 있다는 점입니다. Github project와 issue로 개발 todo list를 관리하기 +_+그것은 바로 Github Project와 issue를 통해 위와 같은 개발 진행 ..
[백준/Swift] 16917: 양념 반 후라이드 반 | PS일지 문제 간단한 문제 요약 치킨은 양념 치킨, 후라이드 치킨, 반반 치킨 세 종류를 판매한다. 각각 A원, B원, C원이다. 파티를 위해 양념취킨 최소 X마리, 후라이드 치킨 최소 Y마리 구매해야한다. 반반 치킨 두마리를 구입하면 양념치킨 하나, 후라이드 치킨 하나를 만들 수 있다. 치킨을 구매하는 금액의 최소값을 구하자. 고려해야 할 사항 최소한으로 양념 X마리, 후라이드 Y마리를 구매해야 한다. X, Y를 구매할 수 있는 최소 가격을 찾어야한다. 문제 풀이, 했갈렸던 점 대박.. 접근 방법은 크게 두가지 였습니다. 첫째는 후라이드 X마리 + 양념 Y마리 구매하는 경우 두번째는 최소 X, Y중 작은 값 만큼 반반 * 2로 구매한 가격 + 남은 치킨 * 해당 치킨 가격 만큼 구매한 가격 이 두가지 중 비교를..
[Swift] enum에서 사용되는 CaseIterable, RawRepresentable protocol 깊게 탐구하기!! 안녕하세요. 오늘은 enum에서 enum type의 모든 case를 Collect해서 배열로 반환할 수 있는 protocol인 CaseIterable을 소개하려고 합니다. 그리고 RawRepresentable도 소개하려고 합니다. Enum 타입으로 case에 rawValue, associated value 뿐 아니라 더 다양하게 활용할 수 있는 protocol이 제공되는 Swift가 정말 좋다고 느껴집니다: ) CaseIterable Protocol CaseIterable은 protocol입니다. Protocol 장점은 상속이 되지 않는 값 타입 자료형인 Enum에 여러 개의 protocol을 채택할 수 있습니다. allCases의 타입은 Self.AllCases입니다. 이는 Collection을 준수하..