티스토리 뷰

반응형

 

안녕하세요 :) Zedd입니다.

쓰고있는 글이;; 많긴 한데 마무리가 안되네요. 힝구

 

오늘 좀 고민을 해봤는데...

어떤 사람이 ViewController를 만들 때 A와 B나 C같은걸(클래스, 프로토콜)

미리 상속or채택 해놓으면 개발하는데 좀 편하지 않을까! 하다가..

요 Xcode Template 생각이 나서 개삘받음

 

일단 지금 상태를 보면

 

이렇게 만들어지네요. 

일단 차근차근 해봅시다.

 

본격적으로 만들어보기 전에..

 

얘네의 템플릿은 어디있을까요!?

 

터미널 루트에서, 

 

cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/

 

에 가면

이렇게 템플릿들이 있습니다.

프로젝트 템플릿먼저 보면, 

 

저는 iOS밖에 없네요. 들어가보면

뭐 이런것들 있음.

말그대로 "프로젝트"를 만들때 나오는 그런 애들이 모여있는 곳임.

 

파일 템플릿은 파일만들 때 나오는 애들이고 ㅇㅇ

 

이거

 

저는 프로젝트 템플릿이 아닌 "파일 템플릿"을 만드는 거네요 그럼!!

본격적으로 만들어봅시다. 

 

만들기전에, 알아야 할 사실이 있습니다!

자...아무거나..는 아니지만 템플릿 폴더에 들어가보면

이렇게 종류가..3개인 파일들을 볼 수 있습니다.

2x까지 지원하는 섬세함..뭐지?

 

암튼

 

저기서 ____FILEBASENAME___.???은 실제로 만들어질 파일의 템플릿이에요.

위에서는 .metal이 붙었지만 뭐 .swift, .xib뭐 이런게 붙을 수 있어요!

 

그리고 이미지!

딱 보면 감이 오듯이..

 

요 윈도우에서 나오는 이미지 입니다.

참고로 .png는 48x48이구요, 2x는 당연히 96x96입니다.

 

그리고..마지막으로 TemplateInfo.plist.

이친구는 만드는 템플릿의 configuration을...담당한다고..저는 이해했어요.

 

그럼 일단 만들어봅시다!!!!!!!

cd ~/Library/Developer/Xcode

로 가시면

 

아니 다른 블로그 보면 여기에 Templates라는 폴더가 있는데 저는 없어요;;;;;

그래서 일단 만들어주겠삼

 

mkdir -p ~/Library/Developer/Xcode/Templates/File\ Templates

 

자 보시면 Templates폴더 안에 File Templates라는 폴더를 만들어주었어요.

이제 이 File Templates안에 우리의 커스텀 파일 템플릿을 넣어줄겁니다.

 

템플릿은 전부 확장자로 .xctemplate을 가지고 있으니 따라써줍니다. 이제 저 폴더 안에

아까 위에서 말한 이미지 2개, __FILEBASENAME__.???, TemplateInfo.plist을 넣어주면 될 것 같아요.

저는......

큼큼...

 

복붙해줍니다.

.metal을 .swift로만 고쳐줬어요.

 

그러면...!!!

 

이렇게 나오게 됩니다. 아 File Templates가 저 그룹(?)의 이름이구나...

그럼 저는 이름 바꿀래여

 

자....

 

그러면 하나씩 해봅시다.

 

 ____FILEBASENAME___.swift

를 고쳐볼게요. 

지금 메탈껄 쌤처ㅕ와서 이런데, 제가 원하는 모습으로 바꿔줄게요.

 

이게 UIViewController의  ___FILEBASENAME___.swift인데요. 일단 이거 복붙하고 생각해보자.

그리고 원하는 모양을 만들어줍니다 :D

저는 주석이랑 HeaderComment 그런거 다 지웠어요.

 

그리고 이미지는 뭐..알아서 하시고 

TemplateInfo.plist를 고쳐볼게요.

 

지금 이상태인데요. 

  • (required) DefaultCompletionName - 파일의 default name.

  • (required) Description - 걍 설명

  • (required) Kind - 템플릿 종류 (파일 or 프로젝트) 

  • MainTemplateFile  - 템플릿에 파일이 2개 이상인경우, 템플릿 파일을 만든 후에 "먼저"열 파일을 지정.

  • (required) Summary - 요약. 저기는 Description랑 똑같네요

  • (required) SortOrder - 이 Custom Template 그룹안에 여러 템플릿이 만들어질 수 있짢슴

 

이렇게. 

얘네 간의 순서를 조정하는데 쓰이는거임

 

뭐 대충 이렇게 만들어줍니다.

그리고...

 

아 깔끔해!!!!!!!!!!!!!!!!!!!!!!!!!

근데 당연히 BaseViewController가 있는 프로젝트에서만 추가해줘야겠죠!?

 

뭔가 강제(?)해줄 수 도 있고..

우리는 프로젝트에서 UIViewController만들 때 이 템플릿을 쓰자! 정도만 서로 합의하면 되니까...

좋은 것 같아요! XD

 

 

 

 

자 하나 더 해볼건데요!!

 

원래 

Cocoa Touch Class를 만들면

 

뭔가 설정할 수 있는? 그러니까 만들어질 파일의 옵션을 선택할 수 있도록 윈도우가 뜨고

Next를 누르면 

 

이렇게 어디 저장할건지 막 뜨잖아요

 

근데 우리꺼는 

 

바로 이렇게 뜨고..딱히 옵션 설정을 할 수 없잖아요?

 

할 수 있는 방법이 있습니다!

TemplateInfo.plist에 Options를 추가하면 되어요!

 

이 Options에 들어갈 수 있는 Key?들은 이렇게 있다고 하는데

 

출처 : http://jeanetienne.net/2017/09/10/advanced-xcode-template.html

이런것들을....TemplateInfo.plist에 추가해볼게요.

<key>Options</key>
	<array>
		<dict>
			<key>Name</key>
			<string>이름</string>
			<key>Description</key>
			<string>설명</string>
			<key>Type</key>
			<string>text</string>
			<key>Required</key>
			<true/>
			<key>Identifier</key>
			<string>identifier</string>
			<key>Default</key>
			<string>Zedd</string>
		</dict>
	</array>

암튼 복붙 ㄱ

위 사진에서 Default까지만 추가해놨어요. 

하나씩 보기전에, 한번 만들어봅시다.

 

자..만들어보면 이제

 

이렇게 뜨는게 아니라!!!

 

이렇게 뜨게 됩니다. 

그리고 Next를 누르면

 

이제 막 어떻게 저장할건지 뜨게되죠!

 

저 옵션에 들어갈 수 있는 Key들을 하나씩 볼게요.

 

 

Name

Name은 

저기에 나오는 이름입니다. 

 

Description

Description은 걍 설명임 ㅇㅇ 저렇게 Name이나 input에 마우스 갖다대ㅔ면 Description나옴

 

이렇게

 

Type

Type은 option의 "타입"인데요. 가능한 타입으로는

출처 : http://jeanetienne.net/2017/09/10/advanced-xcode-template.html

이런게 있다고 해요!!!

지금은 text니까..

이렇게 TextField가 있죠

 

checkbox

static

combo

저렇게 선택할 수 있는게 나오네요. 지금은 값이 없지만 이따가 넣어볼게요.

 

popup

역시나 값이 없네요. 이따가 넣어볼게요.

 

암튼 Type으로 들어갈 수 있는건 이런게 있습니다. 

text로 원복하고

 

내맘대로 만들어보겠음

 

 

자 그리고 다음봅시다.

 

Required 

이게 꼭 필요한 옵션이냐? 를 말하는거임 값이 없으면 Next Button이 활성화 되지 않습니다.

지금 YES니까 이름을 꼭 넣어줘야한다는거죠? 

안넣으면?

 

Next Button이 활성화 되지 않죠!?

 

Identifier

자..이걸 잘 봐야하는데 이 identifier는 말 그대로 identifier로 이 옵션을 고유하게 식별할 수 있습니다.

그리고! 이 옵션의 컨텐츠를 변수로 나타내는데에 사용됩니다. 

 

무슨말인지 잘 모를텐데....봅시다.

저~위에서는 identifier로 해줬는데...뭔가 해보니까 안돼서 이름을 바꿔줬어요!

여러분들도 이름을 바꾸시길 바랍니다.

자 암튼

 

내가 이렇게 뭔가를 썼으면 이 쓴 값을 

___FILEBASENAME___.swift에서 사용해야할거 아님

그때 저 identifier를 쓰게 됩니다.

 

사용하려면

___VARIABLE_적어준 identifier___

형식으로 사용하면 됩니다. 

 

자 저렇게 하고 만들면

 

이미지 재사용한겁니다 뒤에는 무시하세요. 그냥 저는 ZeddViewController로 저장해줄게요.

 

자 그러면 저는 ZeddViewController로 저장해줬기때문에

___FILEBASENAMEASIDENTIFIER___에는 ZeddViewController가 들어가고

___VARIABLE_zeddClass___에는 Zedd가 들어가서 

 

이렇게 나오게 됩니다. 

 

Default

계속 봐서 아시겠지만

Default로 들어가는 값입니다. 

 

 

Values

Values는 combo나 popup타입에 들어갈 수 있는 value들인데요. 

넣어볼게요.

<key>Values</key>
			<array>
				<string>stay</string>
				<string>spectrum</string>
				<string>beautiful now</string>
			</array>

뭐 이런식으로,..넣어주고 type을 저는 combo로 바꿔볼게요. 그러면!

 

이렇게 나옵니당 ㅎㅎ

 

2가지 옵션이 더 있는데........이건 안볼랴

 

그럼 저~~~위에서 말한 SortOrder실험만 하고 글을 마치겠습니당!!

 

 

sortOrder가 같을때는 나중에 만들어진게 앞으로 오더라구요.

 

 

참고 : 

http://jeanetienne.net/2017/09/10/advanced-xcode-template.html

https://academy.realm.io/kr/posts/custom-xcode-template/

https://www.lordcodes.com/posts/create-xcode-file-templates

https://useyourloaf.com/blog/creating-custom-xcode-project-templates/

반응형

'공부' 카테고리의 다른 글

RIBs란?  (6) 2020.01.10
Metal이 뭔지 궁금해서 쓰는 글  (1) 2020.01.05
Mac에서 Go 시작하기 - 설치와 설정  (0) 2020.01.03
Behind the Scenes of the Xcode Build Process (1)  (1) 2019.12.14
Mach-O  (4) 2019.12.06