티스토리 뷰

TIL

[TIL] 2022 / 08 / 10

희철 2022. 8. 11. 01:10

@IBInspectable, @IBDesignable

 

 

위와 같이 작성하고 스토리보드 내에서 버튼의 클래스를 SesacButton으로 바꿔주면 인스펙터 영역에서 설정이 가능.

이때, @IBDesignable을 클래스 앞에 붙여준다면 인스펙터 영역에서 값을 변경했을때, 객체의 변화를 실시간으로 확인할 수 있음.

 

가끔 @IBDesignable이 적용되지 않는다는 빨간 오류가 뜨는데 무시하고 빌드하면 적용됨.

 

 

 

XIB UIView Custom Class

 

 

Empty파일에 UIView넣고 Files'owner에 만들어준 UIView의 클래스를 입력

 

이때, 뷰컨트롤러가 아니기때문에 Safe Area Layout Guide 체크 해제

 

xib에서는 xml형태로 인터페이스 빌더 정보를 갖고 있음.

컴파일할때에 nib파일로 변환되기 때문에, 이를 씬에서 보여주기 위해서는 init을 통해 객체를 생성해주어야함.

 

마지막으로 뷰 넣고 클래스를 설정해주면됨.

이때, 코드로 작성한 것이므로 오토리사이징 확인 필요!

 

 

 

awakeFromNib과 cellForRowAt

 

 

awakeFromNib이 먼저 실행되고 재사용될때마다 cellForRowAt이 실행됨.

 

awakeFromNib은 무조건 한 번만 실행됨.

-> 변하지않는 UI를 설정하면됨. 만약 cellForRowAt에 하면 재사용될때마다 실행되므로 비효율적.

 

테이블뷰 셀 안에 컬렉션뷰를 넣었을 때, 테이블뷰의 메서드들이 먼저 실행됨.

 

 

 

 

prepareForReuse

 

 

셀이 재사용되면서 발생하는 오류를 해결하기 위해 cellForRowAt에서 코드를 작성했는데, 재사용되기 전에 실행되는 메서드인 prepareForReuse에 작성해도 됨.

 

 

 

AutoResizingMask

 

 

부모뷰가 커지거나 작아짐에 따라 서브뷰의 크기나 위치를 조정하는 방식을 결정하게 되는 레이아웃

-> AutoResizingMask로 결정된 레이아웃은 Constraints로 변환되기때문에 이후에 코드로 제약 조건을 추가하는 것은 불가능.

 

위에 말한 방법으로 UIView를 xib파일을 이용해 넣었더니 아래처럼 오른쪽 위에서부터 뷰가 그려지지만 셀에 맞춰지지않는 오류를 겪음.

 

xib파일로 UIView를 넣는 것도 subview를 하는 것이므로 코드로 작성하는 것임.

 

오토레이아웃이 나오기 전에는 Frame Based Layout을 사용했음.

-> 이때 사용하던 것이 autoResizing

 

얘는 같은 레이어 상에 있는 형제 객체끼리 레이아웃을 잡을 수 없고, 부모뷰를 기준으로만 가능함.

 

아무튼 왼쪽과 위쪽만 활성화되어있어 왼쪽 위부터 xib에서의 모양대로 셀을 그렸던 것 같음.

 

 

 

TMDB프로젝트

 

 

 

 

 

translatesAutoresizingMaskIntoConstraints

 

 

autoResizing과 autoLayout을 동시에 사용한다면 충돌이 일어날 수 있음.

-> 코드로 오토레이아웃 코드를 작성하는 경우에 translatesAutoresizingMaskIntoConstraints를 false로 바꿔줘야함.

    즉, 충돌 방지를 위해 AutoResizing을 사용하지 않겠다는 말임.

 

 

 

 

컬렉셔뷰 itemSize

 

 

UICollectionViewFlowLayout에서 itemSize를 정해주면 전체 셀에 적용됨.

 

특정 셀에 대해서만 다른 사이즈를 주고 싶다면 UICollectionViewDelegateFlowLayout 프로토콜을 이용.

 

테이블뷰 안에 컬렉션뷰가 들어있으므로 테이블뷰의 높이도 설정해줌.

 

'TIL' 카테고리의 다른 글

[TIL] 2022 / 08 / 12  (0) 2022.08.12
[TIL] 2022 / 08 / 11  (0) 2022.08.12
[TIL] 2022 / 08 / 08  (0) 2022.08.09
[TIL] 2022 / 08 / 06  (0) 2022.08.06
[TIL] 2022 / 08 / 05  (0) 2022.08.06
댓글
최근에 올라온 글
Total
Today
Yesterday