UIKit, SwiftUI, H.I.G(35)
-
[UIView] View에서 CALayer에 추가해준 속성이 적용되지 않았던 이유 (bounds, frame, viewDidLayoutSubviews, layoutSubViews)
1️⃣ 어떤 이슈가 있었는데?오랜만에 예전에 쓴 글을 참고해서 gradinet가 적용되는 View를 만들어주려고 했다.뷰(gradinetView)가 가지는 CAGradientLayer를 잡아서 색상, 위치, 그라디언트의 시작점과 종료 지점을 지정해 주고,gradient의 frame을 뷰의 bounds와 동일하게 선언해 주고,이렇게 만들어진 CAGradientLayer 객체를 view의 layer에 추가해 주는 방식으로 만들어주면 될 것이라 생각했다.하지만, CAGradientLayer 객체가 view에 추가되지 않아 Gradient가 적용된 View를 확인할 수 없었다.이번 글에서는 해당 View에서 어떤 이유로 gradient가 적용되지 않았는지, 이 문제를 해결하기 위해서 사용한 방식은 어떤 것이었는..
2023.12.01 -
[UISegmentedControl] 상단 커스텀 탭바를 만들어봅시다! (1) - UISegmentedControl 활용
1️⃣ 오늘 만들어줄 화면은? 합동 세미나 과제로 테이블링 어플을 클론코딩하면서 만들었던 상단 커스텀 탭바의 내용을 정리해보겠다. 여러 글들을 찾아봤을 때, 상단 커스텀 탭바를 만들어주는 방법은 크게 두 가지가 있는 것 같았다. CollectionView와 PageViewController를 함께 활용해서 만들어줄 수 있고, Segmented Control을 활용해서 만들어줄 수도 있었는데, 이번 글에서는 후자의 방식으로 구현하는 것을 소개해보겠다. (전자의 방식은 다음에 2탄으로 작성해보기로 하며) 두 방식 중 어떤 방식을 선택해야 하는가 했을 때, 구현 방식으로 본다면 Segmented Contol의 방식이 더 쉽겠지만, 이 방법은 각 탭 영역이 일정한 경우에만 사용할 수 있다는 제한사항이 있으므로 ..
2023.11.26 -
[UITableViewDiffableDataSource] Diffable Datasource, 데이터가 달라졌을 때 View에 효율적으로 반영하는 방법
0️⃣ Diffable Datasource? DataSource?UITableView와 UICollectionView를 사용할 때, 공통적으로 사용하는 두 객체가 있다.그것은 바로 Delegate와 DataSource.잠깐 Delegate와 Datasource의 개념을 복습하고 지나가보자면,MVC(Model-View-Controller) 프로그래밍 디자인 패턴에서 이 객체들을 바라봤을 때,뷰를 그리기 위해 필요한 데이터를 제공하는 모델(M)의 역할은 DataSource가, 화면을 처리하는 뷰(V)의 역할은 테이블뷰 인스턴스가, 뷰의 모양과 동작을 관리하는 컨트롤러(C)의 역할은 Delegate가 담당한 셈이라고 이해하면 된다.오늘 이 글에서는 데이터를 제공하는 DataSource 중에서도 (제공되는 데이..
2023.11.04 -
[UISerarchBar] UISearchController를 이용해서 TableView의 특정 Cell을 표출하는 SearchBar
1️⃣ Intro 이번 글에서는 요즘 과제로 하고 있는 아이폰 기본 "날씨" 앱을 클론 코딩하면서 알게 된 SearchController와 SearchBar에 대한 내용을 정리해 보겠다. 내가 구현하고 싶었던 내용은 아래 내용과 같았다. 여러 지역의 날씨 데이터가 아래 gif에서 보이는 것과 같이 UITableView의 Cell로 구성되어 있을 때, NavigationBar에 포함되어 있는 SearchBar에 내가 검색하고 싶은 지역 이름을 입력하면, 해당 이름이 포함된 지역의 날씨 데이터 Cell만 TableView에 표출할 수 있도록 하는 내용이다. 2️⃣ UISearchBar? UISearchController? UISearchBar는 사용자의 텍스트 입력을 받는 텍스트 필드와 함께 검색/취소/북마..
2023.11.03 -
[iOS] 스톱워치 앱 만들기 (4) - UIEditMenuInteraction과 UIPasteboard
[iOS] 스톱워치 앱 만들기 (3) - 테이블 뷰에 랩 타임 추가하기 [iOS] 스톱워치 앱 만들기 (2) - 버튼 클릭에 따른 상태 변화 기능 구현 [iOS] 스톱워치 앱 만들기 (1) - 프로젝트 기본 세팅과 Timer에 대한 이해 오랜만에 써보는 iOS 개발 글이다. 오지 않을 것만 같던 mini-min-dev.tistory.com 이번 글에서는 내가 스톱워치 앱을 만들기로 한 가장 주된 이유인, "Copy Paste 기능"을 구현해 보도록 하겠다. 갤럭시에서는 테이블 뷰에 랩 타임이 나와있으면 이를 쉽게 복사해서 기록을 공유할 수 있는 것에 반해, 아이폰 스톱워치에는 그 기능이 없어 내가 실제로 군대에서 어려움을 겪었다. (스톱워치를 사용할 때마다 갤럭시 찾기....) 그게 답답했던 나는 이번 ..
2023.07.07