Mobile (50) 썸네일형 리스트형 [iOS] Bounds 와 Frame View의 Bounds와 Frame은 면접에서 나오는 질문들 중 흔한 질문이라고 합니다. 특히 그 둘의 차이점에 대해서 많이들 질문하신다고 하네요. 이번 게시물에서는 해당 내용을 다뤄보려고 합니다. 1. 기본 개념 View의 Frame과 Bounds를 설명하기 이전에 몇 가지 알아두어야 할 사항이 있습니다. the origin point of the view as a CGPoint value(x and y values on horizontal and vertical axises) the size of the view as a CGSize value(width and height) Frame과 Bounds 둘 다 CGPoint로 x, y 위치를 나타내고, CGSize로 높이와 너비를 제공합니다. Frame.. [Swift] 값 타입과 참조 타입 (Value and Reference Types) 1. Value Type & Reference Type 스위프트의 타입은 두 가지 종류로 생각할 수 있습니다. 첫 번째는 값 타입(Value Type) 입니다. 값 타입은 각 인스턴스들이 복사한 값을 갖는 타입입니다. 두 번째는 참조 타입(Reference Type) 입니다. 참조 타입은 인스턴스들이 하나의 주소를 공유하는 타입입니다. 그렇다면 스위프트의 타입들은 어디에 속할까요? 구조체(Struct), 열거형(Enum), 튜플(Tuple)은 값 타입에 속하는 타입들입니다. 클래스(Class) 타입은 참조 타입입니다. 이것은 비슷한 기능을 하는 구조체, 열거형과 클래스의 가장 큰 차이점이라고 할 수 있습니다. Value Type : Struct, Enum, Tuple Reference Type : Cla.. [iOS] CollectionView - 댓글창 만들기(3) 이번 3편에서는 DataSource를 설정해보도록 하겠습니다. 1. extension ViewController 해당 코드는 ViewController의 viewDidLoad()에서 실행시켜 줄 예정입니다. extension ViewController { fileprivate func configureDataSource() { // 여기에 DataSource 설정이 들어갑니다. } } 2. Cell 등록 TableView에서도 Cell을 등록해주어야 하잖아요? 마찬가지입니다. CollectionView에서도 Cell을 아래와 같이 등록해줍니다. 조금 다른 부분은 CellRegistration로 등록을 해주는 것인데, 여기서 Int는 Item의 Identifier 입니다. 이것은 그때그때 필요에 맞게 변경.. [iOS] CollectionView - 댓글창 만들기(2) CollectionView의 CompositionalLayout을 설정해보도록 하겠습니다. DataSource를 추가해주는 과정은 3편에서 진행합니다. 1. ViewController 급하신 분들은 아래 "더보기"를 클릭하셔서 전체 코드를 사용하세요 ! 더보기 // ViewController.swift import UIKit import SnapKit import Then class ViewController: UIViewController { lazy var commentCollectionView: UICollectionView = UICollectionView( frame: .zero, collectionViewLayout: createLayout() ).then { $0.autoresizingMas.. [iOS] CollectionView - 댓글창 만들기(1) CollectionView로 댓글창을 만들어보려고 합니다. 아래를 따라오시면 다음과 같은 댓글 창을 만드실 수 있습니다 ! Tool UIKit , SnapKit , Then , CollectionView , CompositionalLayout 1. 구상 구상은 위와 같습니다. Section: 댓글 전체 Section Header: 댓글 Cell Item: Section Header에 대한 대댓글 Section Footer: 더보기, 댓글달기 등의 기능 즉, Section Header가 원 댓글을 의미하고 Cell Item들은 각각 대댓글을 의미합니다. 그리고 Section은 하나의 댓글입니다. 2. SectionHeader 우선 SectionHeader를 만들어보도록 하겠습니다. 사실 SectionHea.. [iOS] RxSwift를 이용해서 이전 화면으로 데이터 전달 이번 글에서는 RxSwift, NavigationController를 사용해서 데이터를 이전 화면으로 보내는 방법에 대해 설명합니다. 1. 데이터를 보낼 ViewController를 설정해줍니다. // SecondViewController Setting class SecondViewController: UIViewController { var sendString = PublishSubject() } extension SecondViewController { @objc func goToFirstViewController(_ sender: UIButton) { self.navigationController?.popViewController(animated: true) sendString.onNext("이 글.. [iOS] CollectionView - CompositionalLayout(2) 01. 목표 : 콜렉션 뷰 가로 스크롤 이번 목표는 아래 이미지와 같이 가로로 넘기는 CollectionView를 만들어보려고 합니다. 아직 CollectionView를 완전히 익힌 상태가 아니라 조금 부족한 부분이 있을겁니다. 이 부분은 계속 공부하면서 개선해 나갈 생각입니다. 그럼 시작해보겠습니다. 02. CollectionViewCell.swift 먼저 셀을 구성해주도록 하겠습니다. SnapKit을 써서 조금 더 쉽게 오토레이아웃을 잡았습니다. import SnapKit import Then class CollectionViewCell: UICollectionViewCell { lazy var img: UIImageView = UIImageView().then { $0.image = UIImage(.. [iOS] CollectionView - CompositionalLayout(1) 1. Layout Layout은 CollectionVIew의 Content들의 구성을 결정합니다. Layout은 개발자가 원하는 대로 Content를 구성할 수 있게 유연하게 디자인되어 있습니다. 아래 사진에 나와있는 App Store의 Layout도 Custom된 Layout으로 구성되어 있습니다. 2. Compositional Layout CollectionView는 두 가지 방식의 Layout을 제공하고 있습니다. FlowLayout CompositionalLayout 그 중에서 제가 공부해 볼 건 CompositionalLayout 입니다. CompositionalLayout은 빠르고 유연하게 다양한 형태로 뷰를 구성합니다. ConpositionalLayout은 Section, Group, Ite.. [iOS] CollectionView 이번 글에서는 CollectionView의 개념에 대해서 살펴보도록 하겠습니다. 다음 글부터는 실제로 CollectionView를 사용해보고, 어떤 식으로 활용이 가능한 지에 대해서 알아보겠습니다. 저는 CollectionView의 FlowLayout이 아닌 Compositional Layout을 사용할 예정입니다. * 이 글은 애플의 공식문서를 보고 작성했습니다. 공부하면서 작성한 거라 틀린 부분이 있을 수 있습니다. 그 부분에 대해서 댓글을 달아주시면 감사하겠습니다. 1. CollectionView 개요 (1) CollectionView? CollectionView는 TableView와 비교해 데이터의 Layout을 구성하는데 조금 더 자유로운 View입니다. (2) DataSource? UIColl.. [iOS] UIView 그림자 매번 헷갈려서 정리합니다. $0.layer.shadowOffset = CGSize(width: 5, height: 5) $0.layer.shadowColor = UIColor.black.cgColor $0.layer.shadowOpacity = 0.3 $0.layer.shadowRadius = 4 1. ShadowOffset 그림자의 위치를 설정합니다. width가 높을수록 오른쪽으로 이동, height이 높을수록 아래쪽으로 이동합니다. 2. ShadowColor 그림자의 색을 정합니다. 3. ShadowOpacity 그림자의 투명도를 결정합니다. 4. ShadowRadius 그림자의 퍼짐 정도를 결정합니다. 이전 1 2 3 4 5 다음