iOS开源小项目-WSL

WSL是一款拥有 音乐播放,新闻,壁纸,画板,简易地图,计时器等等功能的小项目,是我自己早期学习时做着玩的,并没上架;UI是自己设计,所以挺吃藕的,粗糙的,没做适配,是在6尺寸下开发的 ,还希望不要嫌弃了O(∩_∩)O哈哈~,接口是抓取安卓壁纸、天天动听、IPadDown新闻的接口!此小项目仅作为学习参考用!下面稍微介绍下此APP的功能模块,有需要的可以去去 我的github ,欢迎star! (gif有点大,有的压缩的失真了,,,,)

0 、启动界面 第一次安装运行会有APP的介绍页面,对于启动的动画,是一个小视频,根据当前的系统时间,会有春夏秋冬四种不同的启动画面。可以看壁纸1效果图。

一、壁纸模块

壁纸1.gif

壁纸2.gif

壁纸这块主要是通过应用直接更改系统桌面壁纸和锁屏壁纸,调用的是私有API,iOS10以下才会起作用!

#import "UIImage+ZJWallPaper.h"
#import <objc/runtime.h>
#import <objc/message.h>

@interface UIImage ()

@end

@implementation UIImage (ZJWallPaper)

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wundeclared-selector"
/*!
 *  保存为桌面壁纸和锁屏壁纸
 */
- (void)zj_saveAsHomeScreenAndLockScreen
{
    [self.zj_wallPaperVC performSelector:@selector(setImageAsHomeScreenAndLockScreenClicked:) withObject:nil];
}

/*!
 *  保存为桌面壁纸
 */
- (void)zj_saveAsHomeScreen
{
    [self.zj_wallPaperVC performSelector:@selector(setImageAsHomeScreenClicked:) withObject:nil];
    
}

/*!
 *  保存为锁屏壁纸
 */
- (void)zj_saveAsLockScreen
{
    [self.zj_wallPaperVC performSelector:@selector(setImageAsLockScreenClicked:) withObject:nil];
}

/*!
 *  保存到照片库
 */
- (void)zj_saveToPhotos
{
    UIImageWriteToSavedPhotosAlbum(self, nil,nil, NULL);
}

#pragma clang diagnostic pop

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
- (id)zj_wallPaperVC
{
    Class wallPaperClass = NSClassFromString(@"PLStaticWallpaperImageViewController");
    id wallPaperInstance = [[wallPaperClass alloc] performSelector:NSSelectorFromString(@"initWithUIImage:") withObject:self];
    [wallPaperInstance setValue:@(YES) forKeyPath:@"allowsEditing"];
    [wallPaperInstance  setValue:@(YES) forKeyPath:@"saveWallpaperData"];
    
    return wallPaperInstance;
}
#pragma clang diagnostic pop

二、新闻模块

新闻.gif

动画.gif

动画主要代码:UITableView的代理方法
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSArray *array =  tableView.indexPathsForVisibleRows;
    NSIndexPath *firstIndexPath = array[0];


    //设置anchorPoint
    cell.layer.anchorPoint = CGPointMake(0, 0.5);
    //为了防止cell视图移动,重新把cell放回原来的位置
    cell.layer.position = CGPointMake(0, cell.layer.position.y);


    //设置cell 按照z轴旋转90度,注意是弧度
    if (firstIndexPath.row < indexPath.row) {
        cell.layer.transform = CATransform3DMakeRotation(M_PI_2, 0, 0, 1.0);
    }else{
        cell.layer.transform = CATransform3DMakeRotation(- M_PI_2, 0, 0, 1.0);
    }


    cell.alpha = 0.5;


    [UIView animateWithDuration:1 animations:^{
        cell.layer.transform = CATransform3DIdentity;
        cell.alpha = 1.0;
    }];

}

三、音乐播放器

在线播放,后台播放,批量下载,歌词解析,锁屏歌词,滚动歌词;

2017/6/7更新:由于接口数据发生了改变,可能现在音乐播放器这块儿没法看到效果,我把锁屏效果和歌词解析,滚动显示功能单独抽出来又写了一篇文章和demo,感兴趣可以去我的这篇文章看看 iOS 音乐播放器之锁屏效果+歌词解析

音乐.gif

锁屏歌词.PNG

详情可以参考我之前的文章: iOS 音乐播放器之锁屏效果+歌词解析 仿简书分享-UIActivityViewController系统原生分享 iOS技术网站和常用软件 iOS后台音频播放及锁屏歌词 文字进度

四、画板

可以调画笔的粗细,深浅,颜色,也可以选择图片涂鸦:

画板.gif

相关文章:CALayer系列、CGContextRef、UIBezierPath、文本属性Attributes画板demo https://github.com/wslcmk/draw.git

五、更多

这里有简易地图,手电筒,二维码,计分器,最好在真机上跑。

更多.gif

后台定位.png

上面的效果需要设置 self.locationManager.allowsBackgroundLocationUpdates = YES;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏十月梦想

字体大小单位vw和reg

vm是相对浏览器宽度,1vm浏览器1%,10vm10%,浏览器窗口大小,字体自适应,开发多用到vm作为字体单位

14750
来自专栏移动端开发

屏幕方向该知道的那些事儿

前言     这两天在学关于屏幕旋转的相关的知识,也延伸出了加速器和陀螺仪这些以前没有深入去学习过的知识点,在没有仔细看之前也有一些问题在想,比如;用户关闭了手...

282100
来自专栏移动开发之家

Android 拍摄(横\竖屏)视频的懒人之路

请捂着你的良心说话,对于贫穷的作者(我)不是应该打赏么 ̄へ ̄!,接下来工作又要忙起来了,更新应该是放缓了呢╮(╯_╰)╭,好伤心。

41330
来自专栏葡萄城控件技术团队

【.NET开发之美】使用ComponentOne提高.NET DataMap中的加载速度

所有内置网格编辑器都实现IC1EmbeddedEditor接口,ComponentOne Input库中的控件也是如此。 如果我们想要使用带有C1FlexGri...

11130
来自专栏IMWeb前端团队

聊聊CSS postproccessors

阿里妈妈 @一丝 准备发布其CSSGrace,即CSS后处理插件,于是顺便聊聊CSS postprocessors。 从Rework说起 Rework是TJ...

20260
来自专栏儿童编程

《动物魔法学校》儿童学编程Scratch之“外观”部分

导读:本文通过一个案例《动物魔法学校》来学习Scratch语言的“外观”部分。之后通过一系列其他功能的综合运用对作品功能进行了扩展。

14040
来自专栏程序员的SOD蜜

常用前端资源收集

经常看到很多好的前端框架,今天起凡是遇到就整理到这里,此文会不断更新。 1,avalon 组件--作者司徒正美,国产MVVM JS组件 https://segm...

29590
来自专栏数据小魔方

Xcelsius(水晶易表)系列3——深入了解单值部件

今天继续分享有关单值部件的使用技巧! 今天的小案例非常简单,是一组关于产品销售利润的计算。 给定进货成本、国税税金、零售定价、预计销售数量等,最后需要输出的指标...

29870
来自专栏Jerry的SAP技术分享

分享一个开源的JavaScript统计图表库,40行代码实现专业统计图表

这可能是史上最简单易用的开源统计图表绘制库了。柱状图,饼状图,点状图等等您能想到的类型全部支持。

24030
来自专栏Material Design组件

Human Interface Guidelines — Accessibility

17320

扫码关注云+社区

领取腾讯云代金券