LSClockHide 제작 과정 (SpringBoard Tweaking)
Source
Evernote/Advanced View Required/Creative myself LSClockHide 작성기.md
Summary
이 문서는 iOS 잠금 화면(Lockscreen)의 시계(ClockView)를 숨기는 Tweak ‘LSClockHide’의 개발 과정을 기술한다. 저자는 SpringBoard의 SBAwayView 클래스를 분석하여, 기존 dateView만 숨기면 날짜만 사라지는 문제를 발견하고, 상위 뷰인 TPLCDView를 찾아냈다. 최종적으로 SBAwayView의 topBar 속성을 후킹(Hooking)하여 alpha를 0.0f로 설정함으로써 시계 숨김을 구현했다. 또한 미디어 컨트롤(MediaControls) 표시 시 시계가 함께 사라지는 버그를 해결하기 위해 showMediaControls/hideMediaControls 메서드를 후킹하여 조건부 표시 로직을 추가하는 과정을 다룬다.
Key Points
- SpringBoard의 잠금 화면 UI는
SBAwayView와SBAwayController클래스에서 관리됨. - 시계 숨김을 위해
SBAwayView의dateView를 직접 조작했으나, 이는 날짜 부분만 감싸고 있어 전체 시계 뷰를 숨기기에 부적합함. - 디버깅 로그를 통해
dateView의 상위 뷰가TPLCDView임을 확인하고, 이를SBAwayView의topBar속성과 매핑함. updateInterface메서드 후킹을 통해self.topBar.alpha = 0.0f로 시계 숨김 구현.- 홈 버튼 더블 탭 시 미디어 컨트롤이 표시되지 않는 문제를 해결하기 위해
showMediaControls/hideMediaControls메서드 후킹을 통한 상태 관리 로직 추가 시도.