iOS

    CollectionView 사용해보기

    목차 - CollectionView가 뭐야 - CollectionView를 만들려면 뭘 해야해? - 간단하게 만들어보자 CollectionView가 뭐야 TableView 처럼 화면에 보여 줄 항목 수를 지정하고 데이터를 나열해서 보여주는 View이다. TableView 보다 자유롭게 배치가 가능하다. Supplementary view: Header, Footer가 될 수 있는 View다. Cell: CollectionView에서 반복적으로 표현하는 View다. CollectionView를 만들려면 뭘 해야해? 1) 재사용되는 Cell을 만들자. 2) Cell에 들어가는 데이터를 구성하자. 3) CollectionView에 Data를 연결해주자. 4) CollectionView에서는 CollectionV..

    ios - 코드로 constraint 적용해보기

    iOS에서 Storyboard를 사용하다보면 사진처럼 Constraints를 추가 할 수 있다. 그냥 iOS가 정확한 위치에 그릴 수 있게 설정하면 된다. x,y를 알 수 있게 왼쪽부터 00정도 떨어지게, 위쪽부터 00정도 떨어지게 설정해주세요~. 전체 width, height는 ~~입니다. 이 두가지만 알려주면 된다. 그래야 어느 위치에 보여 주어야하는지 알 수 있다. code로 보면 contraint를 view.**Anchor 로 지정해주면된다. contarint 적용하는 view.제약조건은.equalTo 부분부터. constant정도 떨어져있다. 라고 이해하면 된다. topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant..

    view 코드로 작성하기(ios programmatic ui)

    App을 생성하면 자동적으로 AppDelegate,SceneDelegate.swift 파일이 생성된다. SceneDelegate.swift 파일에 아래 코드를 추가하면 StoryBoard말고 코드로 뷰를 시작 할 수 있다. func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let scene = (scene as? UIWindowScene) else { return } window = UIWindow(windowScene: scene) // 처음 시작하고자 하는 ViewController window?.rootViewContr..

    1. 가위바위보 만들어보기 (view 클릭 이벤트 넣기)

    처음 iOS를 배울 때 Storyboard를 사용하여 View를 구성 하였는데 너무 불편했다. 새로운 화면을 만들 때 마다 마우스로 클릭, 클릭, 드래그 이런 작업이 너무 지쳤고 UI가 변경되거나 수정되었을 때도 View를 만드는게 너무 귀찮아서 코드로 UI를 짜보기로 했다. 기본적인 개념을 알기위해 여러가지를 만들건데 클릭 이벤트를 알아보기 위해 가위바위보 앱을 만들어보자. 기능: - 화면 터치 시 랜덤으로 가위바위보 중 한개를 보여줌. 구현: 우선 가위바위보에 사용 될 이미지와 label를 코드로 생성해주자. // MARK: Properties /// 가위바위보가 표현될 이미지 /// 기본 값은 Empty로 설정 private var handImageView: UIImageView = { let iv..

    iOS 동시성 (GCD Grand Central Dispatch) 기본 개념

    목차 - 왜 공부하게 되었는가( 쓰레드 충돌, 테이블뷰 스크롤 뷰 이동 ) - 동시성이 왜 필요한가 - ios에서 동시성 관리하는 방법 - 동기, 비동기 개념 - 직렬큐, 동시큐 - DispatchQuque 나머지 왜 동시성을 공부하게 되었는가? 1) 앱 개발을 하던 중에 realm이 쓰레드 충돌을 일으켜서 - realm을 싱글톤으로 사용하고 있었고 .NSCalendarDayChanged 에서 충돌이 일어남. 2) tableView 스크롤이 dispatchQueue로 묶어줘야 동작하는데 그 이유를 알기 위해 // 왜 DispatchQueue로 감싸주어야 하지? DispatchQueue.main.async() { let indexPath:IndexPath = IndexPath(row: 11, section..

    3. View의 생명주기 (LifeCycle)

    뷰의 생명주기 react-native도 그렇고 ios도 생명주기가 존재한다. 생명주기는 만들어지고, 자기 일을 하고 사라지는 과정을 말한다. 각 시기에 무엇을 해야할지 정리하면 이렇다. 뷰의 생명주기 만들어지고 자기 일을 하고 사라지는 과정 viewDidLoad UI를 업데이트를 함 bound, frame같은 기하학(geometry)은 viewDidLoad에서 할 수 없음 viewWillAppear 화면이 나옴을 알 수 있음 시각적으로 처리해야할 일을 하면됨 멀티쓰레딩으로 ui가 집어넣어짐 - 네트워크가 느리다고 버튼이 클릭되면 안되지 않슴 로딩화면을 보여줄수도 있음 여기에도 geometry는 넣지 않음 viewDidAppear 애니메이션을 처리하기 좋은 곳임 viewWillDisappear 여기서 애니..

    2. View에 관하여 (Frame, Bounds)

    View에 관하여. iOS는 사용자에게 Window와 View를 통해 버튼, 사진과 같은 무언가를 보여준다. View는 무엇이고, 어떻게 표현할까? View를 구성 할 때 View를 여러개 사용하여 뷰 계층 구조(View Hierarchy)를 만든다. 부모뷰(Parent View)- 자식뷰(Child View) 혹은 슈퍼 뷰(Super View)- 자식뷰(Sub View)라고 불리는 관계를 만든다. 하나의 View는 부모 뷰가 되고 여러개의 자식 뷰를 가질 수 있다. subViews를 통해 내가 가진 subView들을 코드를 통해 호출 할 수 도 있다. let myViews = view.subviews 뷰는 어떻게 그려질까 뷰가 보여질 위치(x,y)와 뷰의 크기를 결정해주면 화면에 보여지게된다. view..

    1. 계산기 코드로 보는 MVC 패턴

    1. 처음 시작 코드 - 기본적인 View와 이벤트를 연결한다. // // ViewController.swift // calculatorMVC // // Created by Taehoon Kim on 2022/02/01. // import UIKit class ViewController: UIViewController { // Properties // 계산기의 계산결과를 보여줄 label 뷰 let display: UILabel = { let label = UILabel() label.backgroundColor = .systemBlue label.textColor = .white label.textAlignment = .right label.font = UIFont.systemFont(ofSize: 2..