LSClockHide 작성기

Source

  • Evernote/Advanced View Required/LSClockHide 작성기.md

Summary

이 문서는 iOS 잠금 화면(Lockscreen)의 시계(ClockView)를 숨기는 Tweak ‘LSClockHide’의 개발 과정을 기록한 기술 노트입니다. 저자는 SpringBoard의 SBAwayView 클래스를 분석하여 시계 뷰를 제어하는 방법을 탐구합니다. 초기에는 dateView를 숨기려 했으나 날짜만 사라지는 문제가 발생했고, 상위 뷰인 TPLCDView를 찾은 후 SBAwayViewtopBar 속성이 해당 뷰임을 확인하여 alpha 값을 조절해 성공적으로 숨겼습니다. 또한 미디어 컨트롤(MediaControls) 사용 시 시계가 필요하므로, showMediaControlshideMediaControls 메서드를 후킹하여 미디어 컨트롤 표시 시에만 topBar를 보이도록 조건부 로직을 구현하는 과정을 다룹니다.

Key Points

  • iOS 잠금 화면의 UI는 SpringBoard의 SBAwayViewSBAwayController 클래스에서 관리됨.
  • 시계 뷰는 SBAwayViewdateView가 아닌, 이를 감싸고 있는 topBar(실제 클래스는 TPLCDView)를 통해 제어해야 함.
  • updateInterface 메서드에서 self.topBar.alpha = 0.0f로 설정하여 기본 잠금 화면에서 시계를 숨김.
  • 홈 버튼 두 번 누르기 등으로 미디어 컨트롤이 표시될 때는 시계가 필요하므로, showMediaControls 호출 시 alpha를 1.0f, hideMediaControls 호출 시 0.0f로 변경하여 동적으로 표시/숨김 처리함.
  • Theos 프레임워크를 사용하여 Tweak 개발 및 테스트 진행.