我有两套不同的启动图片,怎样根据不同的信息在ios程序启动过程时显示不同的启动图片ios APP

iOS中根据网络环境显示不同图片(干货) - 简书
iOS中根据网络环境显示不同图片(干货)
首先说一下怎么监听网络状态的改变
监听网络状态的改变可以使用苹果提供的Reachability来检测网络状态,也可以使用AFN框架来监听网络状态的改变.相比而言,我更推荐大家使用AFN来监听
如何使用AFN来监听网络状态的改变呢?AFN框架中的AFNetworkReachabilityManager是专门用来监听网络状态的改变.可以点进去AFNetworkReachabilityManager的头文件中查看.使用十分简单.相信大家都看得懂.用AFN来监听网络状态的改变是需要自己手动开启监听的.在项目中一般在AppDelegate的程序启动完毕的方法中开始监听网络状态的改变.// 开启监听网络状态的改变(一定要使用单例对象)
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
在开发中下载和显示图片,不用多说,当然首选的是SDWebImage框架了.
关于SDWebImage框架,如果你还不会用,那么你别和我说你做过iOS开发啊.
在项目中,为了提高用户的体验,往往都是要根据用户的网络环境不同,而显示不同的图片,以节省用户的流量.
伪代码:if (缓存中有原图) {
if (Wifi环境) {
下载显示原图
} else if (手机自带网络) {
if (偏好设置3G\4G环境下仍然下载原图) {
下载显示原图
下载显示小图
if (缓存中有小图) {
显示占位图片
代码的封装(给UIImageView添加分类)
首先要用上面所讲的用AFN开启监听网络状态
设置imageView显示的图片
@param OriginalImageURL
@param thumbnailImageURL 小图链接
@param placeholderImage
@param completedBlock
获取图片完成之后的回调block
- (void)lxn_setImageWithOriginalImageURL:(NSString *)OriginalImageURL thumbnailImageURL:(NSString *)thumbnailImageURL placeholderImage:(UIImage *)placeholderImage completed:(SDWebImageCompletionBlock)completedBlock
// 判断下缓存中有没有高清的大图
UIImage *originalImage = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:OriginalImageURL];
if (originalImage) {
// 缓存中有高清大图
// 为什么要用这个方法设置图片呢?
因为这个方法设置图片会先取消这个对象的上一次网络请求, 防止因为图片下载慢的时候用户又滑动了屏幕而图片错位.
这个方法会先去缓存中找,没有找到才会继续下载
[self sd_setImageWithURL:[NSURL URLWithString:OriginalImageURL] placeholderImage:placeholderImage completed:completedBlock];
// 缓存中没有大图
AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
if (manager.isReachableViaWiFi) { // WIFI下, 下载大图
[self sd_setImageWithURL:[NSURL URLWithString:OriginalImageURL] placeholderImage:placeholderImage completed:completedBlock];
} else if(manager.isReachableViaWWAN) {
BOOL alwaysDownloadOrinigalImage = [[NSUserDefaults standardUserDefaults] boolForKey:@"alwaysDownloadOrinigalImage"];
if (alwaysDownloadOrinigalImage) { // 设置了3G/4G环境下任然显示大图
[self sd_setImageWithURL:[NSURL URLWithString:OriginalImageURL] placeholderImage:placeholderImage completed:completedBlock];
// 下载小图
[self sd_setImageWithURL:[NSURL URLWithString:thumbnailImageURL] placeholderImage:placeholderImage completed:completedBlock];
// 没有网络
// 判断小图有没有缓存
UIImage *thumbnailImage = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:OriginalImageURL];
if (thumbnailImage) { // 显示小图
[self sd_setImageWithURL:[NSURL URLWithString:thumbnailImageURL] placeholderImage:placeholderImage completed:completedBlock];
} else { // 显示占位图片
[self sd_setImageWithURL:nil placeholderImage:placeholderImage completed:completedBlock];
SDWebImage框架的sd_setImageWithURL:placeholderImage:方法的执行步骤 1.取消当前imageView之前关联的请求 2.设置占位图片到当前imageView上面 3.如果缓存中有对应的图片,那么就显示到当前imageView上面
懂一点点iOS。iOS学习者!祝给予赞赏的伙伴,2017年发大财!|赞赏
收藏已收藏 | 13赞 | 27
分享到微信扫码分享到微信
产品经理疯子。
4913篇作品14.6m阅读总量
热门问题1234567891044263人阅读
iOS(120)
问题:想实现类似微信启动页一样 设置为一个整页面的图片
问题二:iOS启动页面如何设置多停留一会
新建的iOS 项目启动画面默认为LaunchScreen.xib&
如果想实现一张图片作为启动页,如下图
如果启动不行 &记得clear 一下工程
是启动页停留一段时间 &只需要在&AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary
*)launchOptions {
& & // Override point for customization after application launch.
& & [NSThread
sleepForTimeInterval:3.0];//设置启动页面时间
& &&return
添加一个&[NSThread&sleepForTimeInterval:3.0];//设置启动页面时间
苹果开发群 & &欢迎加入 共同学些 共同进步
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:684046次
积分:5766
积分:5766
排名:第3573名
原创:133篇
评论:99条
(1)(19)(3)(1)(7)(2)(9)(23)(25)(14)(19)(1)(1)(1)(1)(4)(3)(1)(1)(2)(4)iOS 问题:系统启动时默认先加载项目中的Default.png图片,请问这个时候怎么加个进度条,当系统启动完毕展现系统首页时,关闭进度条?谢谢 -
系统启动时默认先加载项目中的Default.png图片,请问这个时候怎么加个进度条,当系统启动完毕展现系统首页时,关闭进度条?谢谢
共有 2 个回答
可以这样实现:Default.png图片你不可能改变了,你可以增加一个一模一样的图片,当显示完Default.png之后,会自动显示这张图片。只不过在这张图片上再加上一个进度条,等加载完你的内容之后,将这张图片和进度条隐藏掉。
登录后方可回复
做一个一模一样的loadingview
登录后方可回复
登录后方可回答18003人阅读
iOS 方法(42)
----------iOS开发----------(109)
一.添加启动图片
点击Assets.xcassets进入图片管理,右击,弹出&New Launch Image&或点下面的+号创建Launch Image;如图,右侧的勾选可以让你选择是否要对ipad,横屏,竖屏,以及低版本的ios系统做支持.这边我选了ios8.0和ios7.0。
二.拖入相应尺寸的图片,以本例子需要为例。
我试了一下这里的图片名字可以任意命名,不过格式必须为png格式,如果只是写个demo,也可以下载我所用的这套图片。
640*960 &&(4/4s) & & & & & & & & & & & & & & & &&2X位置
640*1136 &(5/5s/5c) & & & & & & & & & & &R4位置
750*1334 &&(6) & & & & & & & & & & & & & & & R4.7位置
&(6 plus) & & & & & & & & & & &R5.5位置
三.General里面的设置。
如图,Launch Image Source 要设置为LaunchImage,Launch Screen File的内容删除为空。
四.要把LaunchScreen.storyboard(低版本Xcode为LaunchScreen.xib)中的用作LaunchScreen的复选框勾选取消掉,如图。
到这里就大功告成了,so easy,不过有时候会出现第一次运行显示不正常的情况,一般把App删除重新run一遍就好了。
如果觉得显示时间不能满足需求,可以添加此方法延长显示时间(此为swift版本,oc类似)
override func viewDidLoad()
super.viewDidLoad()
NSThread.sleepForTimeInterval(3.0)//延长3秒
另外,还有常用的利用LaunchScreen.xib(LaunchScreen.storyboard)加载启动页和广告,可参考:
补充:之前有人出现,用LaunchScreen.xib真机运行的时候出现黑屏的情况,在网上看到说是图片名字的问题,我亲自试了一下,发现用launchScreen.png不定性的出现黑屏,所以也贴在这里供大家参考。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:92820次
积分:1699
积分:1699
排名:第19380名
原创:79篇
转载:60篇
评论:15条
阅读:6026
(3)(7)(2)(3)(3)(3)(4)(3)(3)(1)(2)(3)(8)(6)(8)(31)(25)(22)

我要回帖

更多关于 ios程序首次启动 白屏 的文章

 

随机推荐