前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS开源小项目-WSL

iOS开源小项目-WSL

作者头像
且行且珍惜_iOS
发布2018-05-22 17:14:27
2.7K3
发布2018-05-22 17:14:27
举报
文章被收录于专栏:iOS开发攻城狮的集散地

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

(gif有点大,有的压缩的失真了,,,,)

0 、启动界面

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

一、壁纸模块

壁纸1.gif

壁纸2.gif

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

代码语言:javascript
复制
#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

代码语言:javascript
复制
动画主要代码: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;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016.11.01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档