티스토리 뷰
네비게이션 타이틀 색 변경
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
______________________________________________________________________________________________________
다마고치 과제
전체 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