SHcommit / LearnMoreSwiftInUdemy

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Clone/Instagram] SignUp 구현 | 복습 & 새롭게 알게된 개념 #4

SHcommit opened this issue · comments

초기 구현 영상

까다로웠던 점

View에서 이미지 추가하기 위한 photo plus를 UIImageVIew로 설정했다. 그리고 제스쳐를 추가 등록했는데 이상하게도 sender가 올바르지 않다는 에러가 났다. 그래서 버튼에 이미지를 추가하는 방식으로 해결했다.

  • TextField에 대해서

바인딩을 직접 구현 후에 전부 값이 들어있을 경우 버튼의 .isEnable true처리해야하는데 바인딩 함수 호출 이후에 값을 VM에 넣은 뒤에 전부 값이 들어있는지의 함수를 호출했었어야 했는데 값 있는지 체크하는 함수부터 호출하는 바람에 살짝 애를 먹었다. 학교 공부하고 하루 지나고 보니 단번에 에러를 수정할 수 있었다.

코테 구현할 때도 그렇고 가끔은 너무 코드만 바라보면 생각보다 쉬운 답도 못 찾는것 같다.

복습한 개념

  • clipsToBounds옵션

RegistrationController에서 이미지 피커로 선택된 이후에 이미지 선택 버튼의 cornerRadius를 해당 버튼의 절반으로 둥글게 조절했다. 그럼에도 사진은 여전히 ImagePicker의 edited된 네모였다. 아하,, 버튼의 clipsToBounds 옵션을 true로 바꾸지않아서 내부의 View가 잘리지 않았던 것..(깜빡)

  • withRenderingMode(.alwaysTemplate)

이미지의 색 대신 내가 직접 이미지의 색을 정할 수 있다.

새롭게 알게된 개념

  • 커스텀 뷰의 super.init(frame:) 에 관해서

UIView관련된 객체를 커스텀할 때 항상 궁금했었다. 반드시 override init(frame: CGRect) 를 구현해서 super.init(frame:frame)으로 frame을 넘겨줘야 하는 코드를 구현했어야 init가 가능했었다. 내 맘대로 매개변수 생성자 함수를 지정해도 어차피 super.init()은 없고 super.init(frame)이나 .init(coder:)를 호출해야 했었어서 난 매번 함수를 통해 커스텀 뷰들의 옵션을 부여했었다.

이번 강의를 통해 내가 커스텀으로 init()을 선언해도 반드시 부모 생성자 함수를 호출해야하는데 이때 super.init(frame: .zero) 값을 준 후에 다시 size를 정의하면 된다는 것을 새롭게 알았다 +_+

새로 적용한 개념

아직 컴바인을 배우지 않아서 클로저로 textField바인딩을 할 수 있도록 새로 만들었다. 원래는 TextField의 바인딩만 적용하면 됬는데 복습겸 VM에서 값 변경시 TextField에 반영되도록 Dynamic 타입을 구현했다.

강의 보기 전 Login에서 로그인 버튼 isEnable관련해서 id pw입력되어야만 터치이벤트가 가능하는 기능을 구현할 때 등록하는 화면에서도 쓰일 것 같아 프로토콜로 처리했다. 강의에서도 비슷하게 했다 .. ㅎㄷㄷ 근데 좀 다른 것은 난 함수 터치 이벤트 함수까지 선언했었다 +_+