日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android 抽屉新热榜 splash,【IOS】模仿quot;抽屉新热榜quot;动态启动页YFSplashScreen,iosyfsplashscreen...

發(fā)布時(shí)間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 抽屉新热榜 splash,【IOS】模仿quot;抽屉新热榜quot;动态启动页YFSplashScreen,iosyfsplashscreen... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

【IOS】模仿"抽屜新熱榜"動(dòng)態(tài)啟動(dòng)頁YFSplashScreen,iosyfsplashscreen

IOS最好要設(shè)置系統(tǒng)默認(rèn)啟動(dòng)頁面,不然進(jìn)入應(yīng)用就會(huì)突然閃現(xiàn)黑色畫面

下圖是我們要實(shí)現(xiàn)的效果:

總體思路:設(shè)置一個(gè)系統(tǒng)默認(rèn)啟動(dòng)頁面,在進(jìn)入didFinishLaunchingWithOptions時(shí),

給Window添加自定義啟動(dòng)頁,其初始畫面和系統(tǒng)啟動(dòng)頁一樣。

可在自定義啟動(dòng)頁實(shí)現(xiàn)一些動(dòng)畫,動(dòng)畫結(jié)束后,將自定義啟動(dòng)頁移除。

一.設(shè)置系統(tǒng)默認(rèn)啟動(dòng)頁

現(xiàn)在,新建項(xiàng)目會(huì)自動(dòng)生成LaunchScreen.storyboard啟動(dòng)頁面文件。

來到項(xiàng)目根目錄 ?點(diǎn)擊General ?找到以下:

發(fā)現(xiàn)除了直接設(shè)置Launch Screen File,還能夠設(shè)置Launch Image Source來實(shí)現(xiàn)添加啟動(dòng)頁面。

所以我們來使用這種方式來實(shí)現(xiàn)吧。使用Assets.xcassets添加圖片,

1.LaunchScreen.storyboard我們用不到了,可以將其刪除。同時(shí)第三行將Launch Screen File設(shè)為空。

2.第二行,點(diǎn)擊User Asset Cattalog ?-> Migrate: ?此時(shí)Luanch Images Source會(huì)變?yōu)??Brand Assets

但這不是我們需要的。因此,點(diǎn)擊右邊的箭頭,進(jìn)入Assets.xcassets, 在AppIcon那邊右鍵,選中

App Icons&Launch Images->New IOS Launch Images,此時(shí)在右側(cè)會(huì)出現(xiàn)很多可填入圖片的框框。

之后返回將第二行選中LuanchImage,設(shè)置完成后結(jié)果如下圖所示。

現(xiàn)在給剛才新建的LaunchImage添加圖片就能夠展示系統(tǒng)默認(rèn)的啟動(dòng)畫面了。

網(wǎng)上很多教程都是到此為止,到底該如何添加圖片卻不知道了。如何設(shè)置圖片請(qǐng)往下看。

(導(dǎo)致的結(jié)果就是添加了圖片后出現(xiàn)上下都有大塊黑邊的情況或者沒有圖片展示)

二.設(shè)置系統(tǒng)啟動(dòng)頁圖片

LaunchImage里面的內(nèi)容如下,并且我已經(jīng)把對(duì)應(yīng)的圖片分辨率標(biāo)注出來了。

(為了適配不同大小的屏幕,除了Landscape橫屏,總共需要五張不同分辨率的圖,已經(jīng)用顏色區(qū)分了)

然后是不同尺寸設(shè)備所使用的圖片(這個(gè)名稱只是為了更好的對(duì)應(yīng)起來,將圖片放入LaunchImage對(duì)應(yīng)位置)

這里的邏輯坐標(biāo)系(分辨率)大小可以理解為獲取到的 [UIScreen mainScreen].bounds.size大小.

所以將上述5種分辨率圖片對(duì)應(yīng)放入,就能夠?qū)崿F(xiàn)正常的系統(tǒng)默認(rèn)啟動(dòng)頁了。

(注意:不將這些添加到項(xiàng)目里,直接拖動(dòng)到LaunchImage的對(duì)應(yīng)位置就可以了,在目錄下

Assets.xcassets/LaunchImage.launchimage你能看到自動(dòng)生成的對(duì)應(yīng)特定名稱的圖片,共7張)

三.自定義頁面UIView

1.設(shè)置背景

系統(tǒng)默認(rèn)啟動(dòng)畫面結(jié)束之后,顯示的就是我們添加在Window上的自定義UIView。

為了畫面的流暢性,背景依然需要設(shè)置為和啟動(dòng)畫面一樣的圖片。

針對(duì)不同的設(shè)備,系統(tǒng)默認(rèn)的啟動(dòng)畫面會(huì)顯示不同的圖片,如果我們手動(dòng)去判斷賦值UIView背景,未免有些麻煩。

我們可以通過NSBundle中的infoDictionary的"UILaunchImages"獲取當(dāng)前使用的LaunchImage。

上述獲取到的為一個(gè)字典數(shù)組DicArrays,其數(shù)量會(huì)隨著你添加的LaunchImage圖片而改變。

這里我列出適配所有屏幕(DicArrays數(shù)量為4)時(shí)獲取到的DicArays. ?如下表格:

因此我們只需遍歷出對(duì)應(yīng)大小和方向的UILanuchimageName的值就可以了。

-(NSString *)getCurrentLaunchImageNameForOrientation:(UIInterfaceOrientation)orientation{

NSString*currentImageName =nil;

CGSize viewSize=self.bounds.size;

NSString* viewOrientation = @"Portrait";if(UIInterfaceOrientationIsLandscape(orientation)){

viewSize=CGSizeMake(viewSize.height, viewSize.width);

viewOrientation= @"Landscape";

}

NSArray*imageDicts = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"UILaunchImages"];for (NSDictionary * dic inimageDicts) {

CGSize imageSize= CGSizeFromString(dic[@"UILaunchImageSize"]);  //將字符串轉(zhuǎn)換為Size

NSString*orientation = dic[@"UILaunchImageOrientation"];  //取得方向if(CGSizeEqualToSize(viewSize, imageSize) &&[orientation isEqualToString:viewOrientation]){

currentImageName= dic[@"UILaunchImageName"];

}

}returncurrentImageName;

}

獲取到名稱后,就可以直接通過該名稱給UIImage賦值了。

2.設(shè)置圖標(biāo)和名稱

有沒有注意到上面的示意圖里,"抽屜新熱榜"的圖標(biāo)和文字是一直存在的,之后背景色改變?yōu)槠渌麍D片。

我的想法是將抽屜新熱榜的圖標(biāo)和文字覆蓋在最上層。在系統(tǒng)默認(rèn)啟動(dòng)圖完成后,視圖的結(jié)構(gòu)如圖所示。

(紅圈內(nèi),從左到右分別是頂層的圖片+文字,進(jìn)行動(dòng)畫的UIImageView, UIView本身的背景圖片)

由此可知,我們需在默認(rèn)的UIVIew最頂端添加和背景圖片離位置一模一樣的圖標(biāo)和文字,以保證從系統(tǒng)的LaunchImage跳轉(zhuǎn)到自定義頁面,其中的內(nèi)容是不會(huì)變化的。然而啟動(dòng)畫面有多種尺寸,所以需要將圖標(biāo)按照一定的比例添加到UIView上。所以啟動(dòng)畫面最好也要以某一比例來進(jìn)行內(nèi)部的圖標(biāo)、文字設(shè)計(jì)。

但是由于沒有美工,我想到了一個(gè)辦法。直接先將圖標(biāo)、文字、背景按照一定比例布局到UIView上,然后給不同模擬器截圖。

(我的布局: ?正方形圖標(biāo)寬度、高度均為屏幕寬度的1/6 ? ?圖標(biāo)y值為屏幕高度1/7)

在4、4.7、5、5.5英寸模擬器上,切換到最大窗口(Command+1)后 ?截圖(Command+S)就能夠獲取想要的比例

在3.5英寸模擬器上,Command+ 1 為: 640 * 960 ? ? ? ?Command+3 為: ?320*480

這樣不但得到了啟動(dòng)圖片,你也有了最上層圖片和文字的布局。

3.網(wǎng)絡(luò)請(qǐng)求和沙盒保存

現(xiàn)在整體做好了,還有一個(gè)功能,是在客戶端內(nèi)可更換網(wǎng)絡(luò)圖片,在下次重新進(jìn)入應(yīng)用后生效。

所以涉及到了網(wǎng)絡(luò)請(qǐng)求NSURLSession和沙盒,這里省略并作一些記錄。

使用TaskDownloadSession等相關(guān)對(duì)象

a.實(shí)現(xiàn)了block,就無法進(jìn)入?yún)f(xié)議中,而delegate的協(xié)議可以進(jìn)行恢復(fù)下載、實(shí)時(shí)進(jìn)度等控制.

b.實(shí)現(xiàn)進(jìn)度控制的協(xié)議里 totalBytesExpectedToWrite為-1?解決辦法:

NSMutableURLRequest *request;

[request setValue:@"" forHTTPHeaderField:@"Accept-Encoding"];

見StackOverFlow :?MBProgressHUD with NSURLConnection

源碼以及說明詳見GitHub:YFSplashScreen

http://www.dengb.com/IOSjc/1134548.htmlwww.dengb.comtruehttp://www.dengb.com/IOSjc/1134548.htmlTechArticle【IOS】模仿抽屜新熱榜動(dòng)態(tài)啟動(dòng)頁YFSplashScreen,iosyfsplashscreen IOS最好要設(shè)置系統(tǒng)默認(rèn)啟動(dòng)頁面,不然進(jìn)入應(yīng)用就會(huì)突然閃現(xiàn)黑色畫面 下圖是...

總結(jié)

以上是生活随笔為你收集整理的android 抽屉新热榜 splash,【IOS】模仿quot;抽屉新热榜quot;动态启动页YFSplashScreen,iosyfsplashscreen...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。