HeegeePark / SeSAC

🌱 SeSAC 과제 및 TIL 아카이빙

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

240111 Day13 TIL

HeegeePark opened this issue · comments

commented

실습

호출되는 함수명을 print하고 싶을 때

함수 안에서 print(**#function**) 쓰면 함수명이 출력됨.

tableview cell 레이아웃 잡을 때

디바이스 너비는 고정되어 있으니, 가로 기준으로 잡는 방법 추천

예시

imageView의 superView에 대해 propotionalWidth 잡아주고, imageView aspect Ratio 잡기

vertical 레이아웃은 center로만 설정.

image

Contents Hugging

모든 컴포넌트들은 값이 동일함. huggiong을 조절해서 유동적인 레이아웃 만들 수 있음.

숫자가 클수록 레이아웃을 양보함.

image

Extension

메서드 특성마다 Extension으로 영역 분리를 하면 깔끔한 코드를 관리할 수 있음.

backgroundColor 편하게 쓰기

테이블뷰를 가지고 있는 뷰의 배경색을 바꿔서 잘 나오려면 테이블뷰도 바꿔줘야하고, cell도 바꿔줘야 함.

이럴 때, 테이블뷰와 셀의 배경색을 .clear로 해놓으면 VC의 뷰 배경색만 셋팅하면 됨!

화면 전환

화면 전환의 필요성

작은 디바이스 한 화면에 정보를 보기 좋게 담기에는 한계가 있음.

각 화면에 맞는 정보 제공 필요.

화면 전환 메서드

화살표는 전환 시, 애니메이션 방향

짝궁들끼리만 화면 올리고 없애고 해야 함.

  • ⬆️: present(@ib: modal)

    // 1. 스토리보드 찾기
    let sb = UIStoryboard(name: "Search", bundle: nil)
    // 2. 뷰컨트롤러 찾기
    let vc = sb.instantiateViewController(withIdentifier: "SearchViewController") as! SearchViewController
    // 3. 뷰컨트롤러 전환
    present(vc, animated: true)
  • ⬇️: dismiss

    dismiss(animated: true)

Navigation Controller 필요한 화면 전환

  • ➡️: push(@ib: show)

    • show는 Navigation Controller없으면 modal처럼 뜸
    navigationController?.pushViewController(vc, animated: true)
  • ⬅️: pop

    navigationController?.popViewController(animated: true)

개발 방법

인터페이스 빌더

  • 방향 짐작 가능
  • 코드 필요X - 구현 easy
  • 세부적 대응 불가능

코드

  • 방향 짐작 어려움
  • 코드 필요O - 컨텐츠 표현 용이
    • 유동적인 화면 전환에 유리해서 코드로 많이 핸들링
  • 세부적 대응 가능

코드로 present() 스타일 바꿔서 쓰기

VC의 프로퍼티 중 modalPresentationStyle 변경하여 presnet하기

vc.modalPresentationStyle = .fullScreen
present(vc, animated: true)

코드로 navigation 달린 뷰 present

네비게이션 컨트롤러를 코드로 추가하여 네비게이션 컨트롤러를 present

modalPresentationStyle도 navigtionController에!

let nav = UINavigationController(rootViewController: vc)
present(nav, animated: true)

같은 storyboard에 속해있는 VC present

VC가 storyboad라는 프로퍼티를 가지고 있기 때문에 UIStoryBoard 인스턴스를 만들지 않아도 괜춘

let vc = self.storyboard?.instantiateViewController(withIdentifier: "DetailViewController") as! DetailViewController

번외) TableView에서 카톡 채팅화면처럼 상단에 광고 넣는 다양한 방법

  1. 테이블 VC에 헤더뷰 추가
  2. 섹션을 나눠서 0번 섹션에 광고Cell 1개 넣기
  3. indexPath.row == 0에 해당하는 cell에 광고 넣기

프로퍼티

인스턴스 프로퍼티: 생성한 인스턴스가 가지는 프로퍼티

타입 프로퍼티: 클래스 타입 자체가 가지는 프로퍼티

둘 다 값을 저장하므로 저장 프로퍼티임.

타입 프로퍼티의 메모리 저장 위치

타입 프로퍼티는 메모리의 데이터 영역에 저장됨.

앱이 꺼질 때까지 영구적으로 저장됨.

접근 방법

타입에 바로 접근 가능

하지만 인스턴스에서는 접근 불가