iphone关于单倍图和二倍图(导航 背景 变高)
同学们and朋友们大家好!今天我想说一下关于@2x二倍图的知识,以我所知所见所闻来讲述我的理解!
别看关于这么点小知识,有很多初学者在这个上面常会犯错误,以下是我的理解:
用二倍图是为了适配iphone4以上的设备(所谓的retina屏),如果你的项目要适配3gs,那么你要备两套图,一套是一倍图,比如image.png(320*480),另一套是二倍图,比如image@2x.png(640*960)。当然你在用的时候,比如UIImage *image = [UIImage imageNamed:@"image.png"],或者UIImage *image = [UIImage imageNamed:@"image"],这两种方法,在iphone4以上系统会自动去找image@2x.png图片来显示。
我不知现在用3gs的用户还有多少,以前写项目时都要适配3gs,所以就备两套图在项目中,没什么问题。
现在大部分项目都不用再适配3gs了,那么,你会怎么备图在项目中。
第一种情况:项目中只有不带@2x的图片,image.png(640*960),但是它是双倍图,然后你在项目中用时就直接[UIImage imageNamed:@"image.png"],这样会导致一些问题,当你在用系统的控件时,
比如系统导航条,我设的image.png大小是640*88双倍图,
UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:self.viewController];
[nav.navigationBar setBackgroundImage:[UIImage imageNamed:@"image.png"] forBarMetrics:UIBarMetricsDefault];
不管在什么设备上,大家看一下效果:
3gs和iphone4以上
iphone4以上,系统找图片时,会直接在后面加上@2x,那么这个的问题是,系统加image@2x.png找不到图片,就直接用image.png,用一倍图来做处理。(也有可能,设备找不到图片而无法显示的,这个是听说的,我没碰到过)
so,大家可以看出效果来!所以大家在用系统控件时,设置图片时考虑一下图片的问题,看你是不是也犯这个错误了。
第二种情况:项目中只有带@2x的图片,image@2x.png(640*960)图片,在项目中所有的图片后面都加上了@2x,那么你会怎么用,我猜,你会这么用:
UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:self.viewController];
[nav.navigationBar setBackgroundImage:[UIImage imageNamed:@"image@2x.png"] forBarMetrics:UIBarMetricsDefault];
同样是处理系统的控件,图片你这样用了[UIImage imageNamed:@"image@2x.png"],导致的情况跟上面第一种情况是一样的。
正确的用法[UIImage imageNamed:@"image.png"],即使你的图片后面跟@2x你也不要这么用,直接image.png就行了,因为系统
会帮你加上@2x。这样系统在找这张图的时候是image@2x.png在项目中能够找到,如果你直接用image@2x.png,系统会找
image@2x@2x.png这样的图片,那么在系统找不到的情况下,就直接用image@2x.png图片来当做一倍图做处理。
所以,只有双倍图的情况下,我跟周晓栋的见解是:
1、在项目中,无论代码还是 xib只用不带@2x的图片做为名字,就像这样UIImage *image = [UIImage imageNamed:@"image.png"]
2、在真实文件中必须有@2x 的文件,不带@2x 的文件可有可无(如果有,可以在 xib 中更好的显示,因为xib 只认不带@2x 的图片预览)
有点绕口,望理解。
有说的不对的地方,还望大牛们多多指点。
转载请注明原处:http://blog.csdn.net/rhljiayou/article/details/11127323
iphone关于单倍图和二倍图(导航 背景 变高)的更多相关文章
- 前端二倍图的思考(涉及Retina)
EXCELL格式 1 csv格式导出来之后不能用EXCELL打开,会乱码.用记事本打开,然后将"(英文的引号出掉),就可以了. 关于二倍图的操作 概念: 设备像素:也叫物理像素,显示设备上最 ...
- 如何在普清的屏上调试CSS样式二倍图背景
背景: 最近就遇到一个同事的项目,还是像平常一样小心切图,认真对像素. 一切测试都没有问题,顺利上线. 但是,上线之后,产品经理跑过来说,有BUG. BUG描述:(不认为是BUG) 前端页面上的图标是 ...
- Retina 屏幕与二倍图
分辨率 屏幕分辨率:指屏幕可显示的像素的个数 图像分辨率:位图图像包含的像素的个数 对于 Retina 屏它的分辨率是传统屏的两倍,而屏幕大小没有变化,所以它需要的图片的分辨率应该是传统屏幕的两倍(甚 ...
- 移动端(视口(meta),像素比,二倍图(图片,背景图,精灵图),css初始化(normalize.css),特殊样式,常见屏幕尺寸)
1. 视口:(布局视口(layout viewport),视觉视口(visual viewport),理想视口(ideal viewport)) meta 视口标签 <meta name = ...
- 用一篇文章了解ppi,dpr,物理像素,逻辑像素,以及二倍图
这篇文章能让你了解到什么是分辨率.dpr.dip.ppi (dpi相当于ppi,dpi用点表示物理像素密度,ppi是逻辑像素密度) 首先从最简单的ppi开始: 一部手机,有大有小,怎么知道手机的大小用 ...
- Jeff Atwood质疑iPhone的单键设计
我喜欢使用iPhone,但我对它的一个设计不敢苟同:苹果始终坚持,设备的正面永远只能有一个按键. 我还买了一个Kindle Fire,它更离谱,一个按键都没有!我完全赞成,任何小器具的正面都应该在明显 ...
- vue 表单校验(二)
vue 表单校验(二) vue element-ui表单校验 由于现在使用element-ui进行form表单校验,因而使用其自带的校验规则进行校验,发现有些并不是那么好校验,或者说是校验起来很繁琐, ...
- Kendo UI 单页面应用(二) Router 类
Kendo UI 单页面应用(二) Router 类 Route 类负责跟踪应用的当前状态和支持在应用的不同状态之间切换.Route 通过 Url 的片段功能(#url)和流量器的浏览历史功能融合在一 ...
- Swift开发小技巧--扫描二维码,二维码的描边与锁定,设置扫描范围,二维码的生成(高清,无码,你懂得!)
二维码的扫描,二维码的锁定与描边,二维码的扫描范围,二维码的生成(高清,无码,你懂得!),识别相册中的二维码 扫描二维码用到的三个重要对象的关系,如图: 1.懒加载各种类 // MARK: - 懒加载 ...
随机推荐
- C++sort函数使用总结
头文件:algorithm 对于(整数/字符)数组进行比較时,可直接通过sort(a,a+n)或sort(a.begin(),a.end())进行排序,默认升序排列,须要高速实现降序时,有三种方案 1 ...
- ASP.NET aspx页面中 写C#脚本; ASP.NET 指令(<%@%>);
1 <h2>Welcome</h2> <ul> <% for (int i = 0; i <= Convert.ToInt32(ViewData[&qu ...
- 《Python爬虫学习系列教程》学习笔记
http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己 ...
- SuperSocket源码解析之启动过程
一 简介 这里主要说明从配置系统引导启动SuperScoekt作为应用程序,且以控制台程序方式启动 二 启动过程 2.1 配置解析 从读取配置文件开始,直接拿到一个SocketServiceConfi ...
- haproxy 配置日志
jrhppt01:/root# vim /etc/haproxy/haproxy.cfg # this config needs haproxy-1.1.28 or haproxy-1.2.1 glo ...
- js导出table到excel,同时兼容FF和IE
前台调用(第一个参数是table的id): <input value="导出" type="button" /> function toExcel( ...
- 怎样在android实现uc和墨迹天气那样的左右拖动效果
import android.app.Activity; import android.os.Bundle; import android.content.Context; import androi ...
- 基于visual Studio2013解决C语言竞赛题之1026判断排序
题目 解决代码及点评 /********************************************************************** ...
- mysql双机热备的配置步骤
设置双机热备: 首先要在两台机器上建立同步用户: grant replication slave on *.* to 'repdcs'@'192.168.21.39' identified by '1 ...
- Swift - 判断设备方向(或监听设备方向的改变)
通过UIDevice.currentDevice()来获取设备,可以取得设备当前的方向. 同时,我们可以添加一个通知来监听设备方向的变化,这样在开发中可以对不同的方向定制不同的排版布局界面. 下面通过 ...