티스토리 뷰

TIL

[TIL] 2022 / 07 / 24

희철 2022. 7. 24. 22:42

네비게이션 타이틀 색 변경

 

 

navigationController?.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.sesacBorder ]

 

definition을 보면 font, textColor, shadow를 설정할 수 있다고함.

NSAttributedString.h 안에 foregroundColor같은 특성들이 들어있는 것 같음.

Key로 접근해서 사용

 

 

Separator 색상 변경

 

 

tableView.separatorColor = .red

 

separator의 색을 변경하면 네비게이션바 아래에도 separator가 있어 같이 색이 변함.

-> 네비게이션 바 아래 색을 변경하고 싶을땐 위 코드 사용하면 될듯

 

 

 

rootViewController를 바꿀 때 애니메이션 추가

 

 

CATransition을 이용해 애니메이션을 만들어준뒤, window의 layer의 add를 이용해 추가해주면됨.

let transition = CATransition()
transition.type = .fade
transition.duration = 0.3
sceneDelegate?.window?.layer.add(transition, forKey: kCATransition)

 

CATransition

여기서 CA는 Core Animation의 약자.

 

레이어의 상태가 변할때 애니메이션을 주는 객체라고함.

 

타입을 이용해 애니메이션을 정하고, duration을 이용해 애니메이션 시간도 설정.

 

마지막으로 layer에 add로 추가해주면됨.

-> 나는 window를 이용해 루트뷰컨트롤러를 바꿔주는 과정에서 이용했으므로 window레이어에 추가함.

 

kCATranstion은 transition animation을 나타내는 identifier라고함.

-> 키가 들어가는 자리이므로 k를 붙여서 이름을 정해준 것 같음.

 

 

네비게이션바 bottom line

 

 

방법을 찾지 못해서 꼼수를 이용.

-> UIView를 얇게 붙임

 

view의 height를 0.1단위로 줄여보면서 맞춰봤는데 0.3과 0.2는 똑같았고 0.1부터는 보이지않았음.

 

추가)

0.2로 설정하면 iPhone11에서는 보이지않았음.

그래서 0.3으로 변경함.

 

키보드에 가려지는 뷰 해결

 

 

다양한 방법이 있음.

-> 오픈소스 IQKeyboardManager 사용

-> 키보드가 올라가고 내려가는 것을 감지하여 뷰의 위치 변경

 

 

첫번째 방법은 편하지만 네비게이션바에는 적용이 되지 않았음.

-> 가장 상위 뷰의 클래스를 UIScrollView로 바꾸면 해결은됐지만 정상적으로 동작하지않았음.

 

 

두번째 방법은 NotificationCenter를 이용하는 방법임.

 

옵저버한테 UIResponder를 이용해 키보드가 올라가고 내려온다는 것을 알려주는거임.

NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(_:)), name: UIResponder.keyboardWillShowNotification, object: nil)

NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(_:)), name: UIResponder.keyboardWillHideNotification, object: nil)

name에 적혀있는 것을 이용해 키보드가 내려가고 올라오는 것을 감지.

->#selector에 있는 objc메서드가 실행되는 것.

 

그래서 keyboardWillShow에 뷰를 올리는 코드를 작성하고 HideShow에 뷰를 내리는 코드를 작성하면됨.

@objc func keyboardWillShow(_ sender: Notification) {
        
    self.view.frame.origin.y = -190 // 뷰를 아래에서 위로 올림
    navigationController?.navigationBar.isHidden = true // 뷰만 올라가므로 네비게이션바도 같이 없애줌.

}

@objc func keyboardWillHide(_ sender: Notification) {
    self.view.frame.origin.y = 0 // 다시 원상복구
    navigationController?.navigationBar.isHidden = false
}

출처: https://zeddios.tistory.com/127

 

iOS ) 키보드에 의해 TextField가 가려지는 현상 해결 (Swift)

안녕하세요 :) Zedd입니다. 오늘은 TextField에 대해서 배워볼건데요 :) TextField를 쓰다보면 반드시 접하는 이슈..! 바로 이 문제죠. 바로 키보드에 의해 TextField가 가려지는 현상입니다. 간단하게 오

zeddios.tistory.com

 

 

______________________________________________________________________________________________________

 

다마고치 과제

 

 

전체 UI및 기능 구현 완료

 

계속해서 개선할 점이나 오류가 있는지 확인해야할듯

'TIL' 카테고리의 다른 글

[TIL] 2022 / 07 / 26  (0) 2022.07.26
[TIL] 2022 / 07 / 25  (0) 2022.07.26
[TIL] 2022 /07 / 23  (0) 2022.07.23
[TIL] 2022 / 07 / 22  (0) 2022.07.23
[TIL] 2022 / 07 / 21  (0) 2022.07.21
댓글
최근에 올라온 글
Total
Today
Yesterday