38건의 항목
Border는 바깥으로 그려질까 안쪽으로 그려질까? 오해와 삽질에 대해 정리해본다. Answer innerborder를 그리기 위해서는 현재 표현되는 frame을 border width만큼 줄여버리면 된다.
TableView dataSource에서 아이템을 가져오다 outOfIndex가 나서 crash가 났다. 이로부터 배운 점에 대해 적어본다. 어떤 상황인가? crash 로그를 확인해보니, tableView에서 indexPath를 벗어나 발생했음을 확인했다.
headerView가 있는 TableView에서 높이는 제대로 맞는데, 이상하게 셀수가 많아질 상황에서 끝까지 스크롤되지 않는 문제가 발생했다. headerView의 layout을 먼저 잡아주어야 한다.
이전에 앱의 실행 과정에 대해서 공부했을 때 제대로 이해하지 못했었다. 이번 기회에 제대로 이해하는 자리를 가져보려 한다. 조금 성장했는지 약간 더 이해가 되었다! 그럼 시작하자.
iOS 앱개발에서 화면을 담당한다면 피할 수 없는 autolayout! 공식 문서를 읽어보며 정리해보자.
이전 글에서 PresentationController가 무엇인지 배웠다. 그런데, Transition Animator를 제공하는 부분에서 UIViewControllerAnimatedTransitioning이라는 친구를 보았다. 오늘의 주제는 이녀석이다.
WWDC 2019 키노트를 확인해보며 알짜 정보를 쏙쏙 뽑아보자. Dark Mode iOS 13부터 지원되는 기능이다. 말 그대로 dark mode이다. 해당 기능을 만들면서 고민했던 것은 역시 Mode에 따라 변화하는 색상이었다.
맨날 헷갈리는 이것. 오늘은 뽑아버리겠다. Frame Super view의 좌표계를 기준으로 했을 때 본인의 좌표계를 말한다. 우리가 위치를 표시하기 위해서는 기준 좌표계가 있어야 한다.
Hit Testing 그럼 터치가 어디서 발생했는지는 어떻게 알 수 있을까? 즉, 터치가 발생한 시점에, 어떻게 내가 누른 가장 상위 객체(상단은 view 계층에서 top을 말함)를 판단할 수 있을까? 여기서 이벤트에 반응한 가장 상위 객체를 first Responder라 한다.
이미지 자체를 늘리고 싶은데. 특정 부분은 고정시키고 싶으면 어떻게 할까? Image Stretch a.k.a nine patch 이렇게 이미지의 특정 부분은 고정시키고 나머지만 늘릴 수 있도록 하게 만드는 것을 Image Stretch라 한다.
iOS 화면 업데이트는 어떻게 되는 걸까? draw, layoutIfNeeded, setNeedsLayout 등. 이해가 안가는 것들이 너무 많았다.
불투명한 뷰는 어떻게 만드는거지? 그게 바로 이거였다. Materials iOS는 깊이감을 느낄 수 있도록 하는 반투명 효과를 제공한다. Blur Effect 혹은 Material으로 부르는 친구다.
부분적으로 rounding 처리하는 방법을 알아보자.
앞 글에서 간단하게 소개했지만 Responder Chain은 간단하게 알고 넘어갈 만한 것이 아니다.
CollectionView나 TableView에서 특정 요소로 스크롤 시키는 방법에 대해 알아본다.
디자이너와 일을 하다보면, image의 색상 자체를 변경해주길 바라는 경우가 있다.
업무 하면서 Shadow에 대해 알게된 내용을 정리한다.
Target / Action은 사용자 interaction을 처리하는 주요 방법으로 알려져있다. 문서를 읽으며 알아보자. Target/Action Target/Action은 대표적인 비동기 이벤트이다. Action이 왔을 때, 처리되는 방식이기 때문이다.
TableView 리팩토링 하다가 레거시를 다르게 바꿀 수 있을까하면서 알아보았다. 이걸 배우면 이런게 가능하다. 자동으로 이렇게 애니메이션을 처리해준다! iOS 13에서부터 적용가능하다.
UIImageView 내부에 GestureRecognizer를 넣고 이벤트를 받으려 했더니 동작하지 않았다. userInteractionEnabled UIImageView의 userInteractionEnabled의 값은 defaultValue가 false이다.
UILabel에 들어간 text를 모두 표현하고 싶다면 어떻게 해야할까? 쉬워보이지만 의외로 삽질을 하는 부분이다. 간단하게 알아보자.
ViewController는 계층을 이루면서 구성된다. 그 중 대표적으로 알려진 것이 NavigationController, TabBarController 이다.
입문하지 얼마 되지 않은 나는 여전히 기본 Transition만 사용하고 있다. 나도 화려한 UX를 만들어보고 싶다! 그 전에, 그 시작이 되는 UIPresentationController부터 알아보자.
Shadow를 보다가 scale에 대해서 알게된 내용을 적어본다. 정리 retina display가 나오면서 화면의 기본단위를 논리적으로 정의된 것을 사용하게 되었다. Point가 그것이다.
UIScrollView의 ContentInset, ContentOffset, ContentSize에 대해서 알아본다.
stack view는 autolayout을 적용하지 않고도 layout을 잡을 수 있는 신기한 친구다. 한번 알아보자. 이 글을 읽기 위해서는 이전글을 읽고 오는 것이 이해가 쉽다.
UITabBarController 위 그림에서 가운데 있는 것이 TabbarController이다. TabBarController의 경우 다음과 같은 특징을 갖는다.
tableView를 다루다보면 셀의 크기를 정하는 일이 상당히 귀찮을 때가 있다. 어떻게 하면 동적인 cell을 만들 수 있는지 확인해보자. Working with Self-Sizing Table View Cells 애플에서는 일단 이 옵션을 사용하지 말라고 한다.
UITableView의 Separator와 관련해 해결했던 것들을 적어둔다. 높이 늘리기 찾아본 결과 방법이 없다. 셀 안에 UIView를 만들어서 처리하는 것이 방법. Separator 길이 조정 self.tableView.
UITableView의 바닥을 어느정도 띄워야할 필요가 있었다. 어떻게 했는지 기록해둔다. Solution UIScrollView의 contentInset 동작을 이해했다면 쉽게 알아먹을 수 있다.
회전과 관련된 코드를 보다보니, compact, regular와 같은 용어들이 보였다. UITraitCollection은 무엇일까? Size Classes 먼저, Apple이 다양한 디바이스들의 스크린 모양을 어떻게 논리적으로 관리하는 지 부터 알아야 한다.
디자인 가이드를 읽다보면, Asset이 없는 경우가 있다. 이럴 경우 그냥 View를 만들고 Image화 해서 사용하면 좋겠는데.
View 화면을 구성하는데 기본이 되는 class NSObject를 상속한 UIResponder를 상속해서 구성됨 CustomView는 UIView를 상속함 UIImageView, UILable, UIScrollView… 가능한 것들 Drawing Animation Layout subview 관리 Event Handling UIResponder 상속하기 때문에, touch와 같은 event에 반응 가능 gesture 추가 초기화 형태 // code init(frame:) init() // default parameter = CGRe...
ViewController는 iOS 앱 개발에서 빼놓을 수 없는 요소이다. 구조적으로 어떻게 구성되었는지 알아보고, 어떤 life cycle을 가지는지 이해해보자. 그럼 시작하자.
code를 보다가 unwind segue라는 녀석을 보게 되었다. 처음 보는 친구라 정리해보려고 한다. Unwind Segue 일단 Unwind라는 뜻을 알아보자. 음. 무언가를 푼다는 개념같다.
UIViewController가 init 되는 시점에 특정 View를 설정하면 안되는가? 왜 안되는가? 핵심 요약 UIViewController의 init에 View를 설정하게 되면, 메모리 부족으로 인해 View가 해제되는 상황에 대응할 수 없다.
Accessibility 자체만 해도 상당히 방대한 개념이다. 이번에는 iOS 개발자가 실제로 많이 사용하는 Accessibility인 Voice Over를 UIKit에 적용하는 방법에 대해 알아보자.
onBan Stack: Caching, MVP, Network, UIKit, UserDefault, iOS Team: 1인 Role: 개발 진행 기간: 2021/09/27 → 2021/10/08 About: 반찬을 주문할 수 있는 간단한 애플리케이션입니다.