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ā)攻城的過程角骤,心得,相互學習,共同進步邦尊,成為攻城獅中的翹楚背桐!