Mac OSX 화면 보호기를 Swift로 만들기
8838 단어 MacOSXAdventCalendarMacSwift코코아
소개
스크린 세이버의 앱을 만든 사람은 거의 없다고 생각합니다만, 그 시작에 Swift로의 기동 방법까지 소개합니다.
또한 이번 프로젝트는 기주 b. 코 m / 카네 신 / 테 x ぁゔ ぇ r에 둡니다.
환경
준비
ScreenSaverEngine.app 준비
구현하는 Screen Saver를 실행하기 위해 ScreenSaver.framework의 ScreenSaverEngine.app를 Applications 디렉토리에 심볼릭 링크를 만듭니다.
$ ln -sf /System/Library/Frameworks/ScreenSaver.framework/Versions/A/Resources/ScreenSaverEngine.app /Applications/ScreenSaverEngine.app
구현
Screen Saver 템플릿
템플릿을 만들면 Objective-C 템플릿 밖에 없기 때문에 Swift 파일을 준비한다. 이때 가능한 한 같은 파일명으로 하는 것.
작성한 후 Objective-C용 템플리 파일을 삭제하십시오.
Swift 용 코드 템플릿
작성한 Swift 파일에 그대로 아래를 붙여넣으십시오.
import Foundation
import ScreenSaver
class TextSaverView: ScreenSaverView {
required init?(coder: NSCoder) {
super.init(coder: coder)
self.animationTimeInterval = 1.0 / 30.0
}
override init?(frame: NSRect, isPreview: Bool) {
super.init(frame: frame, isPreview: isPreview)
self.animationTimeInterval = 1.0 / 30.0
}
override func startAnimation() {
super.startAnimation()
}
override func stopAnimation() {
super.stopAnimation()
}
override func drawRect(rect: NSRect) {
super.drawRect(rect)
}
override func animateOneFrame() {
return
}
override func hasConfigureSheet() -> Bool {
return false
}
override func configureSheet() -> NSWindow? {
return nil
}
}
Target Settings
Principal class 설정
템플리 작성시의 Objective-C와는 다른 명명으로 Swift 파일을 작성했을 경우,
Principal class
의 값을 변경할 필요가 있습니다.Embedded Content Contains Swift Code 설정
Swift 파일을 실행하려면 아래와 같이 값을
Yes
로 변경하십시오.시작
Run에서 구현하는 화면 보호기를 ScreenSaverEngine.app에서 백그라운드로 시작할 수 있습니다.
Scheme 설정
Info에서 Execute에 ScreenSaverEngine.app 설정
Arguments 설정
Arguments의 Arguments Passed on Launch에 다음 값을 설정합니다.
-background
-module "$(EXECUTABLE_NAME)"
Run Script 설정
구현하고 있는 스크린 세이버를 스크린 세이버용의 디렉토리에 카피하기 위해서 이하의 커멘드를 설정한다
open -W "${CODESIGNING_FOLDER_PATH}"
New Run Script Phase
실행 스크립트
Run - 실행
Command + R로 실행하면 아래 그림과 같이 ScreenSaver 설치를 묻는 메시지가 표시되므로 그대로
Install
설치하면 Desktop & Screen Saver 화면이 열리지만 그대로 닫으십시오.
그러면 바탕 화면에서 화면 보호기가 움직이는 것을 확인할 수 있다고 생각합니다.
시작하지 않으면
시작시 디버그 메시지에
Message from debugger: cannot attach to process due to System Integrity Protection
라는 메시지가 나타나면 보호 기능이 활성화되어 있으므로 이를 비활성화합니다.
How to Disable System Integrity Protection (rootless) in OS X El Capitan
csrutil disable; reboot
유형 결론
iOS 개발 밖에 한 적이 없는 쪽이 다수라고 생각합니다만, OSX 개발은 iOS 개발과 같이 프레임워크가 두껍지 않다고, 구그라고 해도 기사가 나오지 않지만 상당히 즐겁습니다.
스크린 세이버 작성의 초보중의 초보를 소개했으므로, 만일, 호평 그렇다면 추가의 실장 방법을 다른 기사로 소개하고 싶습니다.
이번은 일단 여기까지입니다.
Reference
이 문제에 관하여(Mac OSX 화면 보호기를 Swift로 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kaneshin/items/cab5132517f6902824e3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)