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 制作屏幕保护程序相关推荐
- macOS Big Sur 11.3中添加了Hello新的屏幕保护程序
macOS Big Sur 11.3包含一个隐藏的" Hello"屏幕保护程序,该屏幕保护程序似乎是为新iMac型号设计的,但也可以安装在任何运行11.3更新的Mac上. 正如9t ...
- 使用Win32 SDK开发屏幕保护程序
暮鼓集 行走集 1.引言 屏幕保护程序(Screen Saver)的历史几乎与视窗操作系统的历史一样悠久,设计它的目的是为了保护CRT显示器使其的使用寿命更长.但随着技术的进步,新型的CRT显示 ...
- 苹果在macOS Big Sur 11.3中添加了新的屏幕保护程序——“Hello”
macOS Big Sur 11.3包含一个隐藏的" Hello"屏幕保护程序,该屏幕保护程序似乎是为新iMac型号设计的,但也可以安装在任何运行11.3更新的Mac上. 正如9t ...
- Aerial for Mac(mac高清鸟瞰屏幕保护程序)v2.1.3最新版
在寻找mac屏保软件吗?MacW小编为您首推Aerial 下载,这是一款专为mac用户制作的屏幕保护程序,该屏保视频取材自苹果零售店Apple TV的专用屏保,全部由苹果自制的航拍影片,里面的每一个航 ...
- 屏幕保护程序Aerial 安装教程
aerial mac版是一个专为mac用户制作的屏幕保护程序,正如名字所说,该屏保视频取材自苹果零售店Apple TV的专用屏保,全部由苹果亲自制作的航拍影片,里面的每一个航拍都是不可多得的精美作品! ...
- 液晶显示器不宜使用屏幕保护程序
在使用台式电脑时,很多人都喜欢使用屏幕保护程序,当他们转为使用笔记本电脑时,这个好习惯也被保留了下来,但他们却不知屏幕保护程序对笔记本电脑非但没有任何好处,反而还会造成一些负面影响. 实际上屏 ...
- [译]用C#创建一个屏幕保护程序
用C#创建一个屏幕保护程序 原文地址: http://www.harding.edu/fmccown/screensaver/screensaver.html 简介 一个Windows屏幕保护程序是根 ...
- 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 ...
- mac最美屏幕保护程序Aerial安装教程
如果您需要一款mac屏幕保护程序,那么aerial 屏保是您的不二选择!Aerial是基于全新Apple TV屏幕保护程序的Mac屏幕保护程序,可显示苹果在纽约,旧金山,夏威夷,中国等地拍摄的航拍电影 ...
- 请问屏幕保护程序对液晶显示器有没有损害?
请问屏幕保护程序对液晶显示器有没有损害? 2007-10-06 21:37 投射手Robert | 分类:电脑外接设备 | 浏览1510次 分享到: 2007-10-06 23:11 提问者采纳 ...
最新文章
- Python一维二维数据的格式化和处理
- 拟真机器人拯救者奖励_炉石传说:钴制卫士化身偏折机器人,身材缩小但是潜力无限!...
- Dubbo负载均衡配置
- 4.2 神经网络算法代码实现
- 舵机不会玩?看这篇!
- jBPM4.4 window下启动tomcat
- 科研绘图工具软件_如何在Windows 10 Mail中使用绘图工具
- 如何检查数组是否包含JavaScript中的对象?
- MS的完整形式是什么?
- ShardingSphere(三) 水平分库配置搭建,实现写入读取
- Git:clean的用法
- Aliyun Linux2安装Docker
- EMC测试项目与整改案例
- NV12转BGR24算法总结
- visio UML图 视频学习
- jdk 配置出错could not open `C:\Java\jdk16\lib\amd64\jvm.cfg‘ 解决方案
- 读《史蒂夫•乔布斯传》(七)
- vip163邮箱手机版登陆入口是哪个?vip邮箱163实用技巧
- 拷机测试需要多久_网站建设要多久?
- 使用IJKPlayer播放视频实现了一些播放视频的基本操作
热门文章
- An Underwater Image Enhancement Benchmark Dataset and Beyong
- Zotero安装与同步配置(PC+ipad双平台)
- 云计价i20快速入门技巧——“附加费”应用
- 计算机国家级论文,计算机类期刊汇总(核心期刊,国家级期刊)
- m苹果放n篮子_m个苹果放入n个篮子
- 安卓模拟PC浏览器发送http请求
- 安全密码的c语言程序,C语言经典代码“安全的密码”
- CentOS7 建立静态 IP(eth0)
- python:talib 计算 SAR 用 pro_api
- angularjs pdf插件_AngularJS实战 PDF 下载