목록개발/iOS (24)
개발을 잘하고 싶은 주니어?
취업 준비와 면접 준비 때문에 점점 게시글을 올리는게 힘들어지네요.. 그래도 힘내서 iOS공부 하겠습니다..! 혼자서 각종 이슈를 해결하고 스스로 앱 개발을 할 수 있을 때까지...!!!! 화이팅!!!! URLSession 애플 개발 문서에서 URLSession을 다음과 같이 말합니다. 대충 해석해보면 관련 있는 네트워크 데이터의 이동을 관리하는? 객체라고 합니다. 실제로 서버에 데이터를 보내거나 받을 때 이 URLSession 클래스의 도움을 받습니다. URLSession클래스는 데이터를 다운로드, 업로드하거나 서버로부터 데이터를 받는 기능을 가진 api를 제공합니다. 이 api를 이용해서 앱이 실행되고 있지 않을 때 백그라운드에서 다운로드를 수행할 수 있습니다. URLSessionDelegate를 이..
UICollectionViewDiffableDataSource iOS 13 전에는 UICollectionViewDataSource를 채택해서 data source 설정했습니다. 이 프로토콜은 무슨 셀이 화면에 보일지, 몇 개의 셀이 보일지, section 관련 정보와 같은 데이터 정보를 collection view에게 알려줍니다. UICollectionViewDiffableDataSource는 UICollectionViewDataSource와 유사하지만 에러(데이터와 ui가 맞지 않는?)를 발생시킬 가능성이 적습니다. diffable은 화면에 보여질 아이템이 업데이트될 때마다 collection view가 자동으로 업데이트된 상태와 이전의 상태의 차이를 계산한다는 의미입니다. 차이를 계산하고 나면 차이(..
요즘 앱들은 여러 개의 섹션에서 따로 collection view로 되어 있고, 좀 더 다양한 레이아웃으로 이루어져 있습니다. 하지만 이것을 UICollectionViewFlowLayout으로 구현하기에는 한계가 있습니다. 그래서 UICollectionViewCompositionalLayout을 이용해서 더 flexible 한 collection view를 구성하도록 합니다. (iOS 13 or 14 이상의 디바이스에서만 지원됩니다.) Collection view 구성 compositional layout을 보기 전에 collection view의 레이아웃을 살펴 보겠습니다. collection view는 여러 개의 items를 반복해서 보여줍니다. 또한 이 item group을 Sections으로 보여..
우선순위는 Constraints가 뷰의 원래 크기보다 크거나 작게 만들려고 할 때 어떻게 행동해야 하는지를 알려줍니다. Content hugging Priority : 뷰의 원래 사이즈보다 커지려는 것을 막습니다. Compression-Resistance Priority : 뷰의 원래 사이즈보다 작아지려는 것을 막습니다. 사진을 보면 쉽게 이해가 되는데 Content Hugging의 우선순위가 큰 뷰는 뷰의 원래사이즈보다 커지는 것을 막기 때문에 원래 사이즈를 유지합니다. Compression-Resistance의 우선순위가 큰 뷰는 뷰가 작아지는 것을 막기 때문에 원래 사이즈를 유지합니다. Intrinsic Size 뷰는 모두 본래의 크기를 가집니다. 이것은 보통 content와 margin에 의해서 ..
Collection View에 대해서 공부해보겠습니다. Collection View는 데이터의 나열이 자유롭습니다. 또한 UICollectionViewLayout 객체를 상속받아서 나만의 레이아웃도 만들 수 있습니다. UICollectionViewLayout : 컬렉션 뷰의 레이아웃을 전문적으로 관리하는 객체 또한 테이블 뷰와 마찬가지로 구현할 때는 DataSource와 Delegate 프로토콜을 채택해야 합니다. Data Source Collection View는 DataSource 오브젝트 (CollectionView.dataSource 프로퍼티에 저장되어 있음)로부터 데이터 정보를 받습니다. UICollectionViewDiffableDataSource 객체를 사용하면 collection view의..
MVVM 패턴을 공부해봅시다.! MVVM 패턴이 나오기 전에는 MVC 패턴을 많이 사용했습니다. MVC : Model (데이터), View (UI 요소), Controller (중개자) MVVM : Model, View, View Model 하지만 MVC 패턴에서 Controller가 할 일이 방대해짐에따라 코드가 많아지는 현상이 발생하게 됩니다. (여기서 뷰컨은 Massive View Controller라는 별명을 가지게 됩니다.) 이렇게 되면 유지보수하기도 힘들고 수정도 용이하지 않습니다. 이런 이유때문에 나온 게 MVVM 패턴입니다. MVVM 패턴은 Model(데이터), View (UI 요소, UIView, UIViewController), View Model (중개자)로 이루어져 있습니다. MVV..
옛날에는 spacer의 역할을 하는 dummy views를 생성해서 뷰 사이의 공간을 만들어 냈습니다. 하지만 현재는 Auto Layout, layout guides가 생겨서 dummy views는 더 이상 사용되지 않게 되었습니다. dummy views와 layout guides의 차이점은 무엇일까요? 1. 만약 더미 뷰가 스크린에 있으면 사용자가 제스처를 사용할 때, 원하는 뷰가 아닌 더미 뷰를 터치할 수 있습니다. 2. 더미 뷰 또한 view hierarchy에 포함되어 있는 상태에서 계속해서 유지되어야 하기 때문에 여러 개가 있는 경우에는 큰 성능 저하를 만들 수 있습니다. 반면에 layout guide는 view hierarchy에서 사각형 영역 하나만을 정의하기 때문에 성능 저하를 만들지 않습..
스크롤 뷰를 공부해보겠습니다. 스크롤 뷰는 내부 뷰의 스크롤과 줌을 할 수 있습니다. UIView를 상속받습니다. UIScrollView는 UIKit 내부의 클래스들이 상속받고 있습니다. (UITableView, UITextView 등의 클래스) 스크롤 뷰는 손가락의 움직임에 따라서 origin을 그에 따라서 조절합니다. 스크롤 뷰는 따로 다른 일은 하지 않고 vertical, horizontal scroll indicator로서의 역할만 합니다. 스크롤 뷰는 언제 스크롤을 멈출지를 알아야 해서 content view의 크기를 알아야 합니다 기본적으로는 끝까지 스크롤을 하면 그 아래로 더 스크롤되지 않고 다시 위로 튕겨 올라갑니다. 스크롤 뷰는 보통 많은 텍스트를 처리하고 싶을 때 또는, 큰 이미지를 유..