日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

macOS 开发 - 使用 ScreenSaverView 制作屏幕保护程序

發布時間:2023/12/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 制作屏幕保护程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。