macOS 开发 - 使用 ScreenSaverView 制作屏幕保护程序
文章目錄
- 制作一個圖片旋轉的屏幕保護程序
- 1、創建一個 screensaver project
- 2、添加 imgView
- 3、添加imgView 的動畫效果
- 4、添加到 `系統偏好設置 - 桌面與屏幕保護程序` 中
- 5、刪除 屏幕保護
- `.saver` 文件
- 參考資料
制作一個圖片旋轉的屏幕保護程序
參考demo 來源/下載地址:
https://github.com/xiezi222/ScreenSaverDemo
1、創建一個 screensaver project
這里的 organization name 將作為相關文件的前綴
產生的工程結構如下:
其中會自動產生一個類繼承自 ScreenSaverView, .m 文件中有 ScreenSaverView 中重要的方法,提供重寫
2、添加 imgView
重寫 initWithFrame 方法:
- (instancetype)initWithFrame:(NSRect)frame isPreview:(BOOL)isPreview {self = [super initWithFrame:frame isPreview:isPreview];if (self) {self.wantsLayer = YES;self.layer.backgroundColor = [NSColor cyanColor].CGColor; //無效[self setAnimationTimeInterval:1/30.0];[self setupView0];}return self; }- (void)setupView0{NSBundle *bundle = [NSBundle bundleWithIdentifier:@"com.netease.MSSceenSaver"];// NSBundle *bundle = [NSBundle mainBundle]; //使用這個無效NSString *imgPath = [bundle pathForResource:@"beauty" ofType:@"png"];NSImage *img = [[NSImage alloc] initWithContentsOfFile:imgPath];CGFloat imgW = 500;CGFloat imgH = 500;CGRect rect = self.bounds;CGRect fRect = CGRectMake((rect.size.width-imgW)/2, (rect.size.height-imgH)/2, imgW, imgH);self.imgView = [[NSImageView alloc] initWithFrame:fRect];[self.imgView setWantsLayer:YES];self.imgView.layer.backgroundColor = [NSColor yellowColor].CGColor;self.imgView.image = img;[self addSubview:self.imgView]; }3、添加imgView 的動畫效果
重寫 animateOneFrame 方法:
你也可以在這個方法中使用貝塞爾曲線等,繪制更多的動畫效果。動畫的頻率由 AnimationTimeInterval 決定。
- (void)animateOneFrame {CALayer *layer = self.imgView.layer;CATransform3D transfrom = CATransform3DIdentity;_angle = _angle - M_PI/200.0;if (_angle == -M_PI *2) {_angle = 0;NSLog(@"_angle reset");}CGPoint point = CGPointMake(0.5, 0.5);transfrom = CATransform3DRotate(transfrom, _angle , 0.0f, 0.0f, 1.0f);transfrom = CATransform3DConcat(transfrom, CATransform3DTranslate(CATransform3DIdentity, self.imgView.bounds.size.width/2, self.imgView.bounds.size.height/2, 0));layer.anchorPoint = point;layer.transform = transfrom;return; }4、添加到 系統偏好設置 - 桌面與屏幕保護程序 中
運行程序,將在 product 文件夾中產生一個 .saver 類型文件。
進入文件夾,雙擊這個 .saver 文件,系統將提示你安裝。
選擇為此用戶安裝,將安裝到 ~/library/screen savers/ 目錄;
為這臺電腦上所有用戶安裝,將安裝到 /library/screen savers/ 目錄;且安裝和刪除都需要密碼;
在這里插入圖片描述
5、刪除 屏幕保護
在偏好設置面板刪除后,上述文件夾的文件也會隨之刪除。
在文件夾刪除后,偏好設置中不會馬上刪除,會顯示為默認的屏保;僅退出桌面與保護程序目錄也沒用;需要重啟偏好設置應用。
所以建議調試有問題時,刪除文件后,重啟偏好設置。
.saver 文件
一些系統的屏幕保護程序 會存放在 /system/library/screen savers/ 這個地址;
使用finder 前往去看看,右鍵選中一個 saver 文件,顯示包內容,可以發現和平時使用的 App 差不多
他的 info.plist 信息如下:
參考資料
-
官方文檔:
https://developer.apple.com/documentation/screensaver/screensaverview?language=objc -
教程:
http://cocoadevcentral.com/articles/000088.php
總結
以上是生活随笔為你收集整理的macOS 开发 - 使用 ScreenSaverView 制作屏幕保护程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中的terminated_解决m
- 下一篇: WYSE POCKETCLOUD手把手教