23일차 - 21.06.30

수킴·2021년 6월 30일
0

100DaysOfSwift

목록 보기
24/37
post-thumbnail

학습키워드

  • review(복습)
  • Project 1 ~ 3

1. What you learned

사용했던 UI요소

  • UITableView
  • UIImageView 이미지를 사이즈,위치에 맞춰 보여주는 것
  • UIImage 는 픽셀을 포함하고 있습니다.
  • 레티나 HD화면은 @2x , @3x 파일이름을 사용합니다.
  • UIButton : 탭하면 응답하므로 조취를 취할 수 있습니다.
  • UIViewController : 하나의 화면을 표시하는데 필요한 모든 기본 디스플레이 기술을 제공합니다.
  • UIAlertViewController : 경고를 보여주는 뷰컨트롤러 ( 사용자가 무언가를 확인하거나 선택해야 할 때 유용합니다.)
  • UIBarButtonItem : 탭바나 툴바에서 사용하는 버튼
  • UIColor
  • UIActivityViewController : 컨텐츠 공유, 인쇄, 이미지저장 등을 처리할 수 있는 클래스
  • Bundle : 프로젝트에서 빌드한 asset(자산)들을 사용할 수 있습니다.
  • FileManager : 파일시스템을 읽거나 쓸 수 있습니다.
  • random(in:) : 난수를 생성할 수 있는 메서드

UIView와 CALayer의 차이 , UIColor와 CGColor의 차이

UIView를 상위수준, CALayer를 하위수준으로 본다면, CALayer처럼 하위수준 애플리케이션위에 UIView와 같은 상위수준이 구축됩니다.

CGColor : 코어 그래픽스(Core Graphics)프레임워크의 데이터타입 중 하나

색상을 해석하는 방법이 명시되어있는 색상 공간(color space)이 있는 색상(color)을 정의하는 요소의 집합입니다

→ 즉, 코어 그래픽스와 관련된 색상은 모두 CGColor로 지정

UIColor : 색상 데이터 및, 때로는 불투명도(알파값)를 저장하는 객체

UIColor는 NSObject를 상속받으며,  UIKit 프레임워크와 연결되어있습니다.

UIKit은 매우 기본적인 색상에 대한 정의를 제공합니다.

  • UIKit을 사용할지, CALayer사용해야할지 정해야한다면 Xcode가 표시해줍니다.

  • UIKit는 UIColor , CALayer는 CGColor 사용

  • https://zeddios.tistory.com/239 - zedd 블로그

인터페이스빌더 특징

  1. 스토리보드는 인터페이스빌더를 사용하여 편집되었지만 스토리보드식별자를 설정하면 코드에서도 사용가능합니다.
  2. 인터페이스빌더로부터 Outlet, action들을 연결시켜 코드에서 사용할 수 있습니다.
  3. 오토레이아웃은 각각의 인터페이스요소의 상대적인 위치로 규칙을 만들 수 있습니다.

2. Key points

코드 리뷰

  • Project1에서 리소스 경로받아오는 코드

    let items = try! fm.contentsOfDirectory(atPath: path)

    path에서 리소스 경로에 대해 참조합니다.

    만약 디렉토리가 실제로 존재하지 않았을 경우 contentsOfDirectory()호출이 실패하고 에러가 발생합니다.

    하지만 경로를 직접 얻었기 때문에 이 코드가 작동할 것이라는 것을 강제언래핑을 사용합니다.

    즉, 강제언래핑을 사용한다는 의미는 오류가 발생하지 않기 때문에 오류를 찾도록 하지 않는다는 의미입니다.

    ⚠️ 그러나 코드오타인 경우 앱이 충돌할 것입니다.

  • 스토리보드와 코드를 연결하는 코드

    let cell = tableView.dequeueReusableCell(withIdentifier: "Picture", for: indexPath)
    
    if let vc = storyboard?.instantiateViewController(withIdentifier: "Detail") as? DetailViewController {
    }

    식별자를 통하여 스토리보드와 코드를 연결하는 코드입니다.

    2번째 뷰컨트롤러객체를 생성하는 코드는 if letas? 가 사용되었다는 의미는 DetailViewController에 selectedImage프로퍼티가 있기 때문에 일반적인 UIViewController에는 없으며, instantiateViewController()에서 반환한 값에만 있으므로 타입캐스팅을 통해 접근할 수 있습니다.

    🌟 만약 커스텀셀에도 프로퍼티를 사용하고 싶은 경우 2번째 코드와 같이 타입캐스팅을 통해 접근합니다.

3. Challenge

  • 디스크로부터 이미지를 로드하기 위한 코드

    let fm = FileManager.default
    let path = Bundle.main.resourcePath!
    let items = try! fm.contentsOfDirectory(atPath: path)
    
    // 앱 번들에 있는 모든 항목의 배열을 제공하지만 원하는 것을 구분하기위해 hasSuffix()메서드사용

링크

100 Days of Swift - Day 23 - Hacking with Swift

profile
iOS 공부 중 🧑🏻‍💻

0개의 댓글