본문 바로가기

iOS

(12)
UIView - bounds and frame 2탄 우와! 2탄! 퇴근 후 간단하게 작성하는 글이니 편안한 문체 이해해주시면 감사하겠습니다. UIView - bounds UIView - frame UIView의 프로퍼티 중 하나인 bounds와 frame은 뷰의 위치와 크기를 나타내는 속성이다. CGRect 타입이며 origin과 size로 이루어져 있다. origin은 위치를 나타내며 size는 말 그대로 크기를 나타낸다. size는 bounds와 frame 모두 동일하다. 그런데 재밌는 점은 frame의 공식문서 설명을 보면 // frame Setting this property changes the point specified by the center property and changes the size in the bounds rectangle a..
UICollectionView - invalidateLayout() invaildateLayout() 직역하면 현재 레이아웃을 무효화하고 레이아웃 업데이트를 트리거합니다. 기능은 레이아웃 업데이트 사이클에 새롭게 레이아웃을 업데이트 하는 메서드다. 비슷한(?) 기능으로는 reloadData()가 있지만 invaildateLayout은 기존 데이터는 건들이지 않고 레이아웃만 업데이트하는 메서드다. 또한 레이아웃 업데이트를 '트리거' 하는거라 동일한 코드 블럭 안에서 여러번 호출 할 수 있다. 단, iOS 13에서 디바이스를 가로 세로 모드 전환 할 때 메서드를 호출하면 안먹힐 수 있다(?) 간단한 해결 방법으론 VC의 라이프 사이클 중 viewWillTransition(to:with:) 에서 invaildateLayout()를 호출하면 잘 먹는다.
Dynamic Color - 다크모드 천천히 알아보기 위해 편하게 작성하겠습니다. WWDC19 - Implementing Dark Mode on iOS - WWDC19 - Videos - Apple Developer Hear from the UIKit engineering team about the principles and concepts that anchor Dark Mode on iOS. Get introduced to the principles of... developer.apple.com 앱의 모든 View 및 ViewController에는 traitCollection이 있으며 이를 통해 뷰의 모양을 결정하는데 도움을 준다. Dynamic Color를 사용하면 자동으로 light 혹은 dark mode의 색상이 정해진다. 자동으로 ..
UIView - Content Hugging, Content Comporession Priorities 글을 작성하게 된 계기 : UIStackView의 subviews의 intrinsic Content Size만 생각하고 오토레이아웃에서 Size 지정을 안해줬다가 Content Compression Resistance Priority에 의해 사라지면 안되는 Label, Image들이 사라져서 작성하게 됨 요약 Intrinsic Content Size : UILabel, UIImage 등 '컨텐츠'가 있는 View의 자체 크기. Content Hugging Priorities : 늘어나지 않게 잡아주는 값, 낮다면 가장 먼저 크기가 늘어날 수 있다. Compression Resistance Priorities : 줄어들지 않게 저항하는 값, 낮은 순위면 먼저 줄어든다. Priority : 1 ~ 1000까..
[iOS] Framwork? Liberary? 프레임워크와 라이브러리의 차이 참고하면 좋은 글 - [개발상식] 프레임워크(Framework) 와 라이브러리(Library)의 차이 [개발상식] 프레임워크(Framework) 와 라이브러리(Library)의 차이 🚀 "프레임워크와 라이브러리의 차이를 아시나요?"" "음... 프레임워크는 뼈대이고 라이브러리는 모듈 같은 것이고....😰" "그럼 최근에 사용하신 프레임워크와 라이브러리를 알려주세요." "... ex cocoon1787.tistory.com 프레임워크 프레임워크는 말 그대로 일 할 수 있는 최소 단위가 다 갖추어진 코드를 제공하는 집합체다. iOS의 경우 애플에서 제공하는 대표적인 프레임워크로는 Cocoa Touch Framework / Cocoa Framework 가 있으며 이 둘의 차이는 iOS 개발에는 Cocoa To..
[iOS] 오토 레이아웃(Auto Layout) Auto Layout이란? 뷰 계층 구조에 있는 모든 뷰의 크기와 위치를 해당 뷰에 적용된 제약 조건(constraints)에 따라 동적으로 계산하는 것을 의미합니다. 오토레이아웃이 무엇인지, 또 어떻게 사용하는지에 대한 정보 글은 정말 많아서 실제 개발할 때 신경써야 하는 부분에 대해 적어보고자 합니다. 오토레이아웃을 사용할 때 신경써야 할 것들 1. 뷰는 기본적으로 좌표(x, y)와 크기(width, height)를 갖는다. 만약 top, bottom, leading, trailing 조건을 준다면 상관 없지만, Align Horizontal, Vertical만 준다면 width와 height를 통해 뷰의 크기를 정해줘야 한다. 2. 시뮬레이터에서 UI가 의도한대로 그려져도 위 사진과 같이 에러(빨간..
UI구현은 스토리보드로 하는게 나을까 코드로 하는게 나을까? 안녕하세요 Wody입니다! 마지막 포스팅으로부터 약 2달 정도가 지났는데요 ㅎㅎ... 그래서 지금이라도 다시! 블로그로 기록을 남겨보자는 마음에 글을 작성하게 됐습니다. 오늘의 주제는 UI구현을 스토리보드로 할지, 코드로 할지에 대한 고민입니다. 이 주제는 구글에 검색만 해보아도 많은 분들이 다룬 글을 확인할 수 있는데요. 먼저 많은 글들에서 이야기하는 장단점을 간단하게 다뤄보고 제 생각을 이야기해보려고 합니다. 스토리보드 UI의 장단점 장점 UI 구성을 한눈에 확인할 수 있다 View에 어떤 속성과 값을 설정했는지 확인하기 쉽다 단점 StoryBoard 구현을 위해 Xcode 메모리가 올라간다. (이 부분은 기능별로 StoryBoard를 분리하면 해결 가능) 협업시 StoryBoard 충돌 혹은 이슈가..
[iOS] UILabel에 취소선 (strikethroughStyle) 적용하기 UILabel에 취소선 적용하기 Apple Developer - UILabel.attributeText Apple Developer - NSAttributeString Apple Developer - NSMutableAttributedString UILabel의 text에 속성(attribute)를 적용시키려면 UILabel에 있는 attributeText 프로퍼티를 변경해주면 된다. 그런데 attributeText 프로퍼티는 NSAttributedString 클래스 타입의 값으로 이에 맞는 값을 만들어 적용해야 한다. 실제 코드에서 어떻게 만들면 되는지 알아보자 적용하기 let testLabel: UILabel = { let label = UILabel() let label.text = "test La..
[iOS] Unable to activate constraint with anchors Error 개요 SnapKit을 통해 코드로 레이아웃을 만들고 있다가 오류를 만났습니다. 레이아웃을 잡으면 발생하는 오류이고, 레이아웃을 잡지 않으면 오류가 발생하지 않았습니다. 에러의 원인은 레이아웃이라고 생각했습니다. 에러 본문 Thread 1: "Unable to activate constraint with anchors and because they have no common ancestor. Does the constraint or its anchors reference items in different view hierarchies? That's illegal." 에러 해석 (번역기) 쓰레드 1 : "앵커로 구속을 활성화할 수 없음"Anchor : 0x6000017f0380 "OpenMarket.Item..
[iOS] Storyboard 없이 코드로 UI 구성하기 -1- 안녕하세요! Wody 입니다. 오랜만에 포스팅을 하네요 ☺️ 비도 오고 다른 일들을 하느라 글을 못쓰고 있었는데...! 이번에 프로젝트를 하나 새로 하면서 너무나도 당연하게 하고 있던 일들을 한번 정리해보고자 왔습니다. 오늘의 주제는 바로 `Storyboard 없이 코드로 UI 구성하기` 입니다. 제가 처음 iOS 개발을 배우면서 Storyboard 없이 코드를 왜 구성해야 하는지 이해를 못했는데요. 코드로 UI를 작성하면 나에게 불필요한 UI 관련 정보와 기능을 접하지 않고, 필요한 기능만 끌어다 사용이 가능합니다! 반대로 반복적으로 사용되는 UI가 있다면, Custom View를 통해 언제든지 UI를 찍어낼 수 있다는 장점이 있습니다! 또한 복잡한 아웃렛 연결도 안해도 되구요! 암튼 코드로 UI 구성..