文章目录

  • 制作一个图片旋转的屏幕保护程序
    • 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 制作屏幕保护程序相关推荐

  1. macOS Big Sur 11.3中添加了Hello新的屏幕保护程序

    macOS Big Sur 11.3包含一个隐藏的" Hello"屏幕保护程序,该屏幕保护程序似乎是为新iMac型号设计的,但也可以安装在任何运行11.3更新的Mac上. 正如9t ...

  2. 使用Win32 SDK开发屏幕保护程序

    暮鼓集    行走集 1.引言 屏幕保护程序(Screen Saver)的历史几乎与视窗操作系统的历史一样悠久,设计它的目的是为了保护CRT显示器使其的使用寿命更长.但随着技术的进步,新型的CRT显示 ...

  3. 苹果在macOS Big Sur 11.3中添加了新的屏幕保护程序——“Hello”

    macOS Big Sur 11.3包含一个隐藏的" Hello"屏幕保护程序,该屏幕保护程序似乎是为新iMac型号设计的,但也可以安装在任何运行11.3更新的Mac上. 正如9t ...

  4. Aerial for Mac(mac高清鸟瞰屏幕保护程序)v2.1.3最新版

    在寻找mac屏保软件吗?MacW小编为您首推Aerial 下载,这是一款专为mac用户制作的屏幕保护程序,该屏保视频取材自苹果零售店Apple TV的专用屏保,全部由苹果自制的航拍影片,里面的每一个航 ...

  5. 屏幕保护程序Aerial 安装教程

    aerial mac版是一个专为mac用户制作的屏幕保护程序,正如名字所说,该屏保视频取材自苹果零售店Apple TV的专用屏保,全部由苹果亲自制作的航拍影片,里面的每一个航拍都是不可多得的精美作品! ...

  6. 液晶显示器不宜使用屏幕保护程序

        在使用台式电脑时,很多人都喜欢使用屏幕保护程序,当他们转为使用笔记本电脑时,这个好习惯也被保留了下来,但他们却不知屏幕保护程序对笔记本电脑非但没有任何好处,反而还会造成一些负面影响. 实际上屏 ...

  7. [译]用C#创建一个屏幕保护程序

    用C#创建一个屏幕保护程序 原文地址: http://www.harding.edu/fmccown/screensaver/screensaver.html 简介 一个Windows屏幕保护程序是根 ...

  8. flickr搜索_从提示框:DIY笔,将旧光盘回收到游戏中以及在Flickr中搜索Kindle屏幕保护程序...

    flickr搜索 This week we're taking a look at how to make your own stylus, turning your old CDs or DVDs ...

  9. mac最美屏幕保护程序Aerial安装教程

    如果您需要一款mac屏幕保护程序,那么aerial 屏保是您的不二选择!Aerial是基于全新Apple TV屏幕保护程序的Mac屏幕保护程序,可显示苹果在纽约,旧金山,夏威夷,中国等地拍摄的航拍电影 ...

  10. 请问屏幕保护程序对液晶显示器有没有损害?

    请问屏幕保护程序对液晶显示器有没有损害? 2007-10-06 21:37 投射手Robert  |  分类:电脑外接设备  | 浏览1510次 分享到: 2007-10-06 23:11 提问者采纳 ...

最新文章

  1. Python一维二维数据的格式化和处理
  2. 拟真机器人拯救者奖励_炉石传说:钴制卫士化身偏折机器人,身材缩小但是潜力无限!...
  3. Dubbo负载均衡配置
  4. 4.2 神经网络算法代码实现
  5. 舵机不会玩?看这篇!
  6. jBPM4.4 window下启动tomcat
  7. 科研绘图工具软件_如何在Windows 10 Mail中使用绘图工具
  8. 如何检查数组是否包含JavaScript中的对象?
  9. MS的完整形式是什么?
  10. ShardingSphere(三) 水平分库配置搭建,实现写入读取
  11. Git:clean的用法
  12. Aliyun Linux2安装Docker
  13. EMC测试项目与整改案例
  14. NV12转BGR24算法总结
  15. visio UML图 视频学习
  16. jdk 配置出错could not open `C:\Java\jdk16\lib\amd64\jvm.cfg‘ 解决方案
  17. 读《史蒂夫•乔布斯传》(七)
  18. vip163邮箱手机版登陆入口是哪个?vip邮箱163实用技巧
  19. 拷机测试需要多久_网站建设要多久?
  20. 使用IJKPlayer播放视频实现了一些播放视频的基本操作

热门文章

  1. An Underwater Image Enhancement Benchmark Dataset and Beyong
  2. Zotero安装与同步配置(PC+ipad双平台)
  3. 云计价i20快速入门技巧——“附加费”应用
  4. 计算机国家级论文,计算机类期刊汇总(核心期刊,国家级期刊)
  5. m苹果放n篮子_m个苹果放入n个篮子
  6. 安卓模拟PC浏览器发送http请求
  7. 安全密码的c语言程序,C语言经典代码“安全的密码”
  8. CentOS7 建立静态 IP(eth0)
  9. python:talib 计算 SAR 用 pro_api
  10. angularjs pdf插件_AngularJS实战 PDF 下载