본문 바로가기

iOS

(65)
[iOS] 알림 아이콘이 보여지는 언더바 세그먼트 | 세그먼트 컨트롤 커스텀 #2 안녕하세요. 세그먼트 개념 탐구 포스트#1에서는 세그먼트를 사용하는 방법을 소개했습니다. 이번 포스트는 세그먼트를 클릭할 때 전환되는 언더바와 UISegmentedControl의 items에 문자열들을 보여주는 label을 segmented control안에서 인스턴스로 찾아 각각의 레이블 안에 둥근 알림 뷰를 추가하도록 segmented control을 커스텀하려고 합니다. 깃허브 프로젝트 코드 링크입니다. 세그먼트를 누르면 빨간 아이콘이 사라지고, 특정한 경우에 특정 세그먼트에 빨간 아이콘을 생성하도록 호출하는 함수를 구현했습니다. final class RedIconBasedUnderbarSegmentedControl: UISegmentedControl { private lazy var underb..
[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를 구현하게 된 상황 지금 개발중인 "여행을 가다" 앱에서는 위와 같은 컴포넌트들이 있습니다. 제가 생각했을 때 이 사진에서 공통..
[iOS] DequeueReusableCell 정말 자세하게 파해치기 with TableView +_+ | 재사용 큐로 인한 문제!! 안녕하세요!! 오늘은 DequeueReusableCell deep dive를 해보려고 합니다. 친한 형과 대화하다가 저도 궁금했던,, 추가적인 개념을 얘기하면서 배웠고 포스트로 정리하려고 합니다. MVVM 패턴에 대한 의견 공유 중 "cell's model은 vm이 가질 때" 에 관한 얘기가 나왔습니다. cf(참고). 개인적으로 cell 또한 view이고 결국 view는 model이 vm을 통해서 하위 레이어가 관리되야 한다는 생각이 있습니다. 핑크 화살표로 읽어 가시면 됩니다!! DequeueReusableCell을 DeepDive 하게 된 계기 많은 내용이 오갔고 생략됬는데 MVVM 패턴에 대한 제 생각은 cell's vm에서 cell's model에 대한 처리를 해주면 좋겠다는 생각이었습니다(서버의..
[iOS] UnitTest?! 테스트 코드를 짜면 좋은 이유 | Protocol을 통한 의존성 주입+역전 개념 완전 뿌수기 안녕하세요!! 요즘 에어컨 빵빵한 곳에 있으니 공부가 잘 되네요. 오늘 "테스트 코드"를 일부 주제로 열정 빵빵한 부트캠프 팀원들과 의논하며 테스트 코드에 대해 의견을 나누며 공부 했습니다!!! 제가 테스트 코드를 작성하며 알게된 뜻밖의 장점?과 프로토콜을 사용하는 이유와 프로토콜의 장 단점, 의존성 주입과 역전 원칙에 대해서 소개하려고 합니다. 추가로 제가 이해한 Stub과 Mock에 대해서 차이도 소개할 것입니다. 소프티어 부스트캠프.. JK님 덕에 정말 좋은 개념들을 알아가게됬습니다... Unit Test. 누구세요? 뭘 테스트하는 거죠? Unit test를 소개하기 전에, 우선 테스트 코드!는 내가 또는 다른 개발자가 구현한 일부 기능이 잘 동작되는지!! sut(system under test)의..