版权声明:本文为博主原创文章,转载请附上本文链接地址。from : https://blog.csdn.net/lovechris00 https://blog.csdn.net/lovechris00/article/details/83182288
文章目录
制作一个图片旋转的屏幕保护程序
参考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 决定。
扫描二维码关注公众号,回复:
3869810 查看本文章
- (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 信息如下: