윈터보드를 사용하여 테마를 제작하기 위해서는 윈터보드가 무엇인지, 그리고 어떻게 작동하는지를 알아두면 추후에 나오는 중급, 고급, 심화 강좌에서 이해가 빨라질 '수'도 있습니다.
원터보드란?
원터보드는 시디아의 개발자이자 Jailbreak GURU인 Saurik이 개발한 테마 적용 툴 입니다.
폴더 이름 지정
윈터보드 테마는 .Theme로 확장자를 지정해줍니다. 굳이 지정하지 않아도 별 상관은 없지만 윈터보드에서는 테마 파일로 분류를 자동으로 할 수 있게 해주는 일종의 표시자 입니다. 사실 사우릭이 처음 개발할때는 테마 폴더 뒤에 확장자 .theme로 지정을 반드시 하도록 하려 했으나 깜빡하고 그렇게 만들어두지 않아서 그냥 내버려 뒀다고 합니다. (본인 블로그에 그렇게 적혀있어요)
윈터보드의 작동 방식
윈터보드는 다중 테마 기능을 지원합니다. 그래서 리스트에서 가장 맨위에 있는 테마 파일이 적용이 되고, 그 밑에 있는 테마 파일들이 순차적으로 적용이 됩니다. 그래서 A라는 테마가 목록 맨위에 있고 그 안에 Black_base.png가 있고 Silver_base.png는 존재하지 않으며, B라는 테마가 A 밑에 위치하며 Black_base.png와 Sliver_base.png가 있는 상태에서 두 테마를 한꺼번에 적용하면, Black_base.png는 A에서 적용이 되며, Silver_base.png는 B의 것이 적용 됩니다.
윈터보드는 스프링보드가 로드될때 기본 시스템 이미지와 파일을 대체하여 화면에 뿌려주는 역할을 합니다. 그래서 윈터보드를 꺼도 테마는 풀리지 않는 경우가 있습니다. 이는 시스템에 캐시가 남아서 일어나는 현상입니다. 이는 윈터보드 상에서 Summerboard 모드 스위치를 켯다가 바로 끈뒤에 리스프링을 하면 삭제 됩니다 .
간혹 '윈터보드는 너무 무거워서 못 쓰겠어요', '그냥 파일 바꾸는게 나아요' 라고 하시는 분들이 계십니다. 오랫동안 iOS 테마를 제작해 왔던 입장에서 말씀드리는것인데, 이것은 잘 못된 통념입니다. 물론 HTML 배경화면을 적용했을시에는 윈터보드의 리소스 점유율은 매우 높습니다. 그러나 이미지 파일만 교체 시켰을때는 오히려 윈터보드를 사용하지 않을때보다 램 사용량이 더 적습니다.(실험결과 참고링크) 그리고 한가지 중요한 사실은, 일반 윈터보드 테마의 파일을 가져다가 시스템 파일과 교체하시는 분들이 있는데, 이런다고 메모리 점유율이 줄지 않습니다. 윈터보드 테마 파일 자체에 쓰인 이미지의 압축률이 낮아 용량이 크다면 시스템 파일에 덮어 씌워 테마를 적용해도 상황이 별반 다를게 없습니다. 테마를 적용하시면서 메모리 점유율을 줄이고 싶으시면 테마내 아트웍 파일을 압축 하시는게 현명합니다.
File Optimizer로 PNG파일 무손실 압축하기
원터보드의 장점 중 하나는 .artwork 파일을 해체해서 다시 압축할 필요가 없이 .artwork을 개조 할수 있다는 점입니다. artwork 파일은 다른 시스템 이미지에 비해 파일을 교체하기가 상당히 까다로운 편입니다. 물론 수동으로 artwork 파일을 풀어서 교체 한뒤 다시 압축할수도 있습니다. 참고) 파이썬을 이용해서 .artwork 압축풀기
현재 기기에는 해당사항이 없는 기능이지만, 섬머보드의 하위 호환도 지원하여 섬머보드 테마를 그대로 사용할수도 있습니다. 섬머보드와 원터보드의 차이점을 알고 싶으신분은 - 섬머보드와 윈터보드의 차이점은 무엇인가?
폴더 구성
윈터보드의 폴더구성을 살펴보기 위해서 예제 테마를 만들었습니다. 다운로드를 받아 내부가 어떤지 보면서 아래 내용을 읽어주세요.
기본 폴더
윈터보드 테마는 크게 Bundles와 Folder로 구성이 됩니다. 이 안에 테마를 넣게 되는데요, CFBunldeIdentifier 를 통해서 경로를 찾고 그에 해당하는 폴더를 만들어 이미지를 넣고 테마를 적용하면 됩니다.
Bundle Identifier를 이용해서 특정어플 경로 찾기
Bundles > CFBunldeIdentifier를 사용해서 이미지 파일의 위치를 지정하는 폴더
Folders > 폴더 자체의 이름을 가지고 경로를 지정하는 폴더
UIimage > .artwork 파일을 대체하는 역할을 하게 됩니다.
Bundles와 Folders의 자세한 차이점을 알고 싶으신 분은 이 강좌를 참고하세요.
옵션폴더
UISounds > 시스템의 사운드를 바꿀수 있는 폴더입니다. 간혹 풀 테마의 경우 사운드도 바뀌는 경우가 있는데 이 폴더를 활용한 것입니다.
직접 만든 .caf 파일을 넣어서 시스템 사운드를 변경할수 있습니다. - .caf 만들기 강좌
Icons > 섬머보드의 레거시 지원으로 들어있는 폴더. 섬머보드를 사용해 스프링보드 상의 어플이름으로 적용 합니다. 섬머보드 모드를 켰을때만 사용이 가능하며, 전체적인 시스템 속도 저하있습니다. 바탕화면 웹클립(바로가기 아이콘)을 이를 이용해서 바꿀 수 있습니다. (웹클립은 하나의 아이콘으로 인식 됩니다.)
기타 설정파일
Info.plist > 스프링보드 상의 폰트의 스타일을 지정할 수 있으며, 이를 이용해서 시스템 폰트를 별도 폰트 설치 없이 바꿀수도 있습니다.
이에 대해서 더 자세히 알고 싶으신분은 다음 강좌를 참고하세요
SMSBackground@2x.png, SMSBackground.png > 문자메시지 배경을 지정하는 파일. 시스템 상에서는 해당되는 파일이 없으며, dylib를 이용해 강제로 적용 시킵니다.
Wallpaper.html > 바탕화면에 HTML로 페이지를 만들어 넣을 수 있습니다. 배경에 HTML 문서를 넣게 한 이유는 HTML이 힘들지 않고 웹사이트 같은 멋진 요소들을 만들수 있기 때문이라고 Saurik이 밝혔습니다.
I realized "wait, why don't I make that a website? then you could do all kinds of neat things with it!"
-Saurik-
Wallpaper.html을 이용해서 화면에 위젯을 넣게 되면 발생하는 장점이자 단점은 화면에 고정되어 버립니다. 그래서 그 문제를 해결하기 위해서 나온 트윅으로 PerpageHTML,iWidget이 있습니다. 따라서 페이지당 고정된 위젯이나 요소를 넣고 싶으면 PerPageHTML, 그리고 위치를 마음대로 지정해서 위젯을 놓고 싶다면, iWidget을 사용하세요.
LockBakcground.html : 잠금화면에 지정할 수 있는 html 파일 입니다. 그러나 로딩 속도가 심하게 느려서 LockHTML이라는 대체 트윅을 쓰는 편이 낫습니다.
- LockHTML 사용법 (준비중)
윈터보드를 사용해야지만 적용 할 수 있는 항목들
문자 메시지 보내는 창의 배경사진과, 바탕화면에 HTML 홈/잠금화면(고정된)을 넣는 것은 윈터보드로만 할 수 있습니다. 그 이외의 기능은 쌩노가다로 파일 교체하면 어느 정도 구현 할 수 있습니다. (선택은 자유입니다.)
그외 구형 iOS에서는 쓸모가 있었으나 지금은 필요없는(또는 지원이 잘 안되는) 파일들
Wallpaper.png - iOS 3.x 까지만해도 잠금 화면 배경화면만 지원이 되었지 홈화면은 그냥 검정색 배경이었습니다. 그래서 이 파일을 교체하면 배경화면을 바꿀수 있었습니다. iOS4 부터는 홈화면의 배경을 사용자 마음대로 교체가 가능하기 때문에 용도가 없어졌습니다.
LockBackground.png - 배경화면 이미지를 바꾸는 파일입니다.
Dock.png - iOS3.x 까지 쓰이던 독의 이미지를 바꾸는 파일입니다.
StatusBar.png - 상태바 이미지 인데, iOS3.x 이전의 테마에만 적용됩니다. 이후 테마는 artwork 파일을 수정해주어야 합니다.
Wallpaper.mp4 - 동영상 바탕화면입니다. iOS4.x 이상은 안 됩니다. 정 쓰고 싶으면 vWallpaper 라는 트윅을 대신 사용하면 됩니다.
구형 iOS에서는 지원 되었으나 현재는 지원이 안되는 기능들
비디오 월페이퍼 기능: 테마안에 Wallpaper.mp4로 동영상 파일을 넣으면 배경화면처럼 쓸수 있었습니다. 그러나 iOS4.x 이후로는 정상 기능을 하고 있지 않으며 대신에 vWallpaper로 대체 가능합니다.
아직도 사용가능한데 아무도 관심없는 기능
Per-Page Wallpaper: 페이지 마다 배경화면을 지정할 수 있습니다. 테마 폴더에 Page#.png 로 지정한 파일을 넣어주면 됩니다. 그러니까 첫번째 홈스크린의 배경을 바꾸고 싶을때는 Page1.png 라는 파일을 만들어서 넣으면 됩니다.
섬머보드와는 달리 윈터보드는 오픈소스입니다.