티스토리 뷰

TIL

[TIL] 2022 / 09 / 05

희철 2022. 9. 5. 23:15

오늘은 평가 과제를 진행하면서 새롭게 알게된 것들을 적어보겠음.

 

@available(*, unavailable)

 

 

BaseView와 같이 커스텀 베이스 클래스를 사용하여 코드로 구현할 때, required init이 필수로 작성되어야 함.

 

하지만 쓰지 않는 코드이므로 매번 상속받은 클래스에서 작성할 이유가 없음.

 

그럴때에 @available(*, unavailable)을 이용하면 됨.

 

*는 모든 버전을 의미하고, unavailable은 막는 의미이므로 모든 경우에서 required init이 작성될 필요가 없어짐.

 

 

코드베이스로 구현할 때, 스토리보드 삭제

 

 

코드로 구현하면서 항상 남아있는 스토리보드가 거슬렸음.

 

근데 이 스토리보드만 지우면 오류가 발생함.

 

두 가지를 추가적으로 삭제해줘야함.

 

1. TARGETS - Info - Main storyboard file base name 삭제

 

2. Info.plist에서 Storyboard Name 삭제

 

이름만 지우는 것이 아니라 해당 프로퍼티 자체를 -버튼을 눌러 지우면됨.

 

 

테이블뷰 스타일

 

 

TableView를 코드로 만들때 insetGrouped같은 스타일을 정하고 싶다면 이니셜라이즈할 때 설정해야함.

 

 

서치 컨트롤러 취소 버튼

 

 

 

becomeFirstResponder

 

 

작성/수정 화면에 들어왔을 때 텍스트뷰의 becomeFirstResponder값을 true로 주어 키보드를 바로 띄우도록 했음.

-> UIResponder 따로 공부

 

 

서치 컨트롤러

 

 

서치 컨트롤러를 사용할때 searchResultController를 이용하는 경우가 있을거임.

 

보통은 테이블뷰 같은 뷰를 넣어 데이터를 보여줄텐데 이 테이블뷰의 delegate와 datasource 대리자를 searchResultController로 하면 안됨..

 

당연한 얘기긴함. 결과를 보여주는 컨트롤러일뿐이지 실질적으로 서치 컨트롤러가 들어가있는 뷰컨트롤러에서 담당하기때문.

 

그래서 해당 뷰컨트롤러를 대리자로 설정하고, cellForRowAt같은 메서드에서는 tableView로 구분해서 코드를 작성해야함.

 

 

keyboardDismissMode

 

 

스크롤뷰에는 keyboardDismissMode 프로퍼티가 있음. 

 

키보드를 언제 내릴지 정하는 것 같음.

 

onDrag를 사용하면 드래그됐을때 키보드를 내릴 수 있음.

 

 

UIScreenEdgePanGesture

 

 

화면 엣지에서 스와이프하면 화면전환이 되는 앱들을 많이 봤었음.

 

엣지에서부터 스와이프하는 제스처를 의미.

 

 

joined()

 

 

문자열을 다루다보면 split이나 components를 쓰는 경우가 많음.

 

split의 경우는 [Substring]으로, components는 [String]으로 반환해주는데, 이때 배열.joined()를 한다면 문자열로 변환해줌.

 

[Substring]인 경우에도 String으로 반환됨.

 

 

NSMutableAttributedString

 

 

문자열에서 겹치는 range를 지정해서 해당 부분의 색을 바꿀 수 있음.

 

key로 접근하는거보니 색 말고도 다양한 텍스트의 형태들을 바꿀 수 있는듯

 

 

split의 omittingEmptySubsequences

 

 

omittingEmptySubsequences가 true인 경우엔 나눠진 문자열에서 공백은 포함시키지 않음.

 

이때, "\n"은 그대로 나오는 것이 아닌 ""로 나옴.

 

 

trim

 

 

텍스트에서 trimmingCharacters를 이용하면 다양한 형태로 trim시킬 수 있는데, whitespacesAndNewlines는 이름에서도 알 수 있듯이 앞뒤에 있는 공백과 줄바꿈을 없애서 반환해줌.

 

 

traitCollection.userInterfaceStyle

 

 

이 프로퍼티를 이용해 다크모드, 라이트모드에 따라 다르게 코드를 실행시킬 수 있음.

 

 

 

테이블뷰 섹션 헤더

 

 

테이블뷰의 섹션 헤더 타이틀을 네비게이션 타이틀의 Large스타일처럼 크게 바꾸려면 따로 뷰를 이용해야함.

 

viewForHeaderInSection메서드에서 뷰를 추가하고 그 안에 레이블 등을 추가하여 보여주는 것.

 

이때, viewForHeaderInSection에서 frame을 설정할때 높이를 지정했는데 heightForHeaderInSection에서 높이를 따로 설정해주지않으면 원하는대로 결과가 나오지 않을거임.

'TIL' 카테고리의 다른 글

[TIL] 2022/ 10 / 12 - Remote Notification, Method Swizzling  (0) 2022.10.12
[TIL] 2022 / 09 / 06  (0) 2022.09.06
[TIL] 2022 / 09 / 02 (GCD)  (0) 2022.09.02
[TIL] 2022 / 08 / 31  (0) 2022.08.31
[TIL] 2022 / 08 / 29  (0) 2022.08.29
댓글
최근에 올라온 글
Total
Today
Yesterday