WSL是一款擁有 音樂播放,新聞,壁紙,畫板,簡易地圖,計時器等等功能的小項目,是我自己早期學習時做著玩的,并沒上架;UI是自己設(shè)計,所以挺吃藕的,粗糙的,沒做適配,是在6尺寸下開發(fā)的 ,還希望不要嫌棄了O(∩_∩)O哈哈~,接口是抓取安卓壁紙、天天動聽、IPadDown新聞的接口!此小項目僅作為學習參考用!下面稍微介紹下此APP的功能模塊,有需要的可以去去 我的github ,歡迎star!
(gif有點大,有的壓縮的失真了,,,,)
0 、啟動界面
第一次安裝運行會有APP的介紹頁面,對于啟動的動畫,是一個小視頻,根據(jù)當前的系統(tǒng)時間,會有春夏秋冬四種不同的啟動畫面。可以看壁紙1效果圖。
一、壁紙模塊


壁紙這塊主要是通過應(yīng)用直接更改系統(tǒng)桌面壁紙和鎖屏壁紙,調(diào)用的是私有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
二、新聞模塊


動畫主要代碼:UITableView的代理方法
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
NSArray *array = tableView.indexPathsForVisibleRows;
NSIndexPath *firstIndexPath = array[0];
//設(shè)置anchorPoint
cell.layer.anchorPoint = CGPointMake(0, 0.5);
//為了防止cell視圖移動,重新把cell放回原來的位置
cell.layer.position = CGPointMake(0, cell.layer.position.y);
//設(shè)置cell 按照z軸旋轉(zhuǎn)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更新:由于接口數(shù)據(jù)發(fā)生了改變,可能現(xiàn)在音樂播放器這塊兒沒法看到效果,我把鎖屏效果和歌詞解析,滾動顯示功能單獨抽出來又寫了一篇文章和demo,感興趣可以去我的這篇文章看看 iOS 音樂播放器之鎖屏效果+歌詞解析

詳情可以參考我之前的文章:
iOS 音樂播放器之鎖屏效果+歌詞解析
仿簡書分享-UIActivityViewController系統(tǒng)原生分享
iOS技術(shù)網(wǎng)站和常用軟件
iOS后臺音頻播放及鎖屏歌詞
文字進度
四、畫板
可以調(diào)畫筆的粗細,深淺,顏色,也可以選擇圖片涂鴉:

相關(guān)文章:CALayer系列、CGContextRef、UIBezierPath、文本屬性Attributes、
畫板demo https://github.com/wslcmk/draw.git
五、更多
這里有簡易地圖,手電筒,二維碼,計分器,最好在真機上跑。


上面的效果需要設(shè)置 self.locationManager.allowsBackgroundLocationUpdates = YES;
我的github ,歡迎star!別忘了哦!

歡迎掃描下方二維碼關(guān)注——iOS開發(fā)進階之路——微信公眾號:iOS2679114653
本公眾號是一個iOS開發(fā)者們的分享,交流,學習平臺,會不定時的發(fā)送技術(shù)干貨,源碼,也歡迎大家積極踴躍投稿,(擇優(yōu)上頭條) _分享自己開發(fā)攻城的過程,心得,相互學習,共同進步,成為攻城獅中的翹楚!
