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;

我的github ,欢迎star!别忘了哦!

快来赞我啊.gif

欢迎扫描下方二维码关注——iOS开发进阶之路——微信公众号:iOS2679114653
本公众号是一个iOS开发者们的分享,交流,学习平台,会不定时的发送技术干货,源码,也欢迎大家积极踊跃投稿,(择优上头条) _分享自己开发攻城的过程,心得,相互学习,共同进步,成为攻城狮中的翘楚!

iOS开发进阶之路.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,263评论 4 61
  • 吴蓓老师,一位多年自然教育,华德福教育和生态生活的践行者,今天给我们分享的主题是“儿童的自然教育和生活教育及...
    金黄的稻谷阅读 984评论 2 0
  • 今天看了最近一期《奇葩说》的节目辩题就是“不给别人添麻烦是不是美德”。这个问腿也困扰了我好久好久,百思不得其解。突...
    和光同尘_c779阅读 1,332评论 0 2
  • 第一章 爷爷 我所描述的都是真实的,自己亲身经历的,我就是想写下来分享一下我身边的故事。 我出生在一个普通的家庭,...
    本性宇叔阅读 348评论 0 0
  • 双鱼座只管浪漫,哪知世事艰辛,这辈子估计与“土豪”的称谓无缘了,小迷糊对钱完全没概念,还是找一个小土豪结伴吧,为钱...
    韦特塔罗牌占卜阅读 256评论 0 0