NGUI之UIRoot——屏幕的自适应分辨率的计算
- 要明确的三个概念:
- 设计分辨率:在编辑器上开发UI使用的分辨率。我们所有的UI都是在这个分辨率下设计制作的。
- 显示区域分辨率:设备上所显示的UI区域在编辑器中的分辨率。
- 屏幕分辨率:设备实际的分辨率。
- 已知设计分辨率,屏幕分辨率,求区域分辨率的计算方法
- 设置变量
- 设计分辨率 ContentWidth * ContentHeight,以下简写为 CW * CH
- 屏幕分辨率 width * height,以下简写 W * H
- 区域分辨率 TargetWidth * TargetHeight,以下简写 TW * TH (这两个是未知量)
- 所求区域分辨率用 Target 表示
- 求解
- 模式一:保持各个UI在屏幕中所占的百分比(保持宽高比)
不留黑边 |
留黑边 |
|
CW / CH < W / H |
CW / TH = W / H Target = CW * TH |
TW / CH = W / H Target = TW * CH |
CW / CH > W / H |
TW / CH = W / H Target = TW * CH |
CW / TH = W / H Target = CW * TH |
黄色的公式:以宽度为基准自适应 (所用公式记为:公式一)
绿色的公式:以高度为基准自适应 (所用公式记为:公式二)
- 模式二:保持各个UI的像素大小不变(保持宽高比)
- 模式三:保证UI元素在单方向上的比例不变,即自由拉伸(不保持宽高比)
UIRoot
- Flexible 即,上文所说的模式二。但有个地方要额外注意下:
- 这种模式下有两个参数,MinHeight 和 MaxHeight。
- 当屏幕分辨率在 MinHeight 和 MaxHeight 之间时,此时按照模式二正常显示;
- 当屏幕分辨率小于 MinHeight 或者大于 MaxHeight 时,会对整体UI进行缩放,缩放比例为(H / MinHeight) 或者(H / MaxHeight)
- Constrained 即, 上文所说的模式一。
- 这种模式下有四个参数,ContentWidth 与 ContentHeight 以及对应的 Fit
- ContentWidth 与 ContentHeight 填我们的设计分辨率
- Fit 有四种选择模式,不同的模式有不同的自适应方案。为了便于理解,从NGUI网站上找到了一张示意图&自己总结了一下计算所需的公式:
Fit Width |
No |
Yes |
No |
Yes |
Fit Height |
No |
No |
Yes |
Yes |
显示&对应计算公式 |
保证设备不显示黑边 |
保证左右无黑边 (公式一) |
保证上下无黑边 (公式二) |
保证设计分辨率内所有UI全部显示 |
- 额外的计算:计算某个UI(比如图片)在设备上的分辨率
- 图片分辨率大小 PW * PH
- 图片在设备上显示的分辨率大小 TPW * TPH(未知量)
- 计算:需要一个方程组
- (PW * PH) / (TW * TH) = (TPW * TPH) / (W * H)
- PW / PH = TPW / TPH
NGUI之UIRoot——屏幕的自适应分辨率的计算的更多相关文章
- NGUI之UIRoot屏幕分辨率自适应
NGUI在Unity3D游戏开发中非常常用,而NGUI对于每一个UI场景,都是以一个UIRoot为UI游戏对象树的根的,那么这个UIRoot是起什么作用的呢? 先简单看一下UIRoot中的基本属性 U ...
- Unity3D开发(一):NGUI之UIRoot屏幕分辨率自适应
原地址:http://blog.csdn.net/onerain88/article/details/11713299 NGUI在Unity3D游戏开发中非常常用,而NGUI对于每一个UI场景,都是以 ...
- iosiPhone屏幕尺寸、分辨率及适配
iosiPhone屏幕尺寸.分辨率及适配 1.iPhone尺寸规格 设备 iPhone 宽 Width 高 Height 对角线 Diagonal 逻辑分辨率(point) Scale Fac ...
- iPhone屏幕尺寸、分辨率及适配
转:http://blog.csdn.net/phunxm/article/details/42174937 目录(?)[+] 1.iPhone尺寸规格 设备 iPhone 宽 Width 高 H ...
- 【转】iPhone屏幕尺寸、分辨率及适配
原文网址:http://blog.csdn.net/phunxm/article/details/42174937 1.iPhone尺寸规格 设备 iPhone 宽 Width 高 Height 对角 ...
- iPhone手机的屏幕尺寸、分辨率及适配
1.iPhone尺寸规格 设备 iPhone 宽 Width 高 Height 对角线 Diagonal 逻辑分辨率(point) Scale Factor 设备分辨率(pixel) PPI 3GS ...
- CSS 屏幕大小自适应
要想实现css屏幕大小自适应,首先得引入 CSS3 @media 媒体查询器: media的使用和规则: ①被链接文档将显示在什么设备上. ②用于为不同的媒介类型规定不同的样式. 语法: @medi ...
- android webview使用心得 屏幕宽度自适应
webview中右下角的缩放按钮能不能去掉 settings.setDisplayZoomControls(false); //隐藏webview缩放按钮 让Webview加载的页面居中显示有我知道的 ...
- WinForm窗体自适应分辨率
我们自己编写程序的界面,会遇到各种屏幕分辨率,只有自适应才能显的美观.实际上,做到这点也很简单,就是首先记录窗体和它上面控件的初始位置和大小,当窗体改变比例时,其控件的位置和大小也按此比例变化即可.因 ...
随机推荐
- iOS - drawRect致内存增加
GPU VS CPU iOS - 软件绘图 自定义"斑马线背景"View,重写drawRect绘制斑马线: ⚠️ 仅仅添加这一个View,内存就比正常增加了3-5M之间. 测试源代 ...
- Swift中类与结构的初始化
前言:通过学习与研究swift3.0的官方文档关于初始化这部分可以总结为一句话:类与结构是确保一个类型的实例可以使用之前,其所有存储属性都得到了正确的赋值. 一,结构的初始化1 struct Firs ...
- ip地址库 新浪,淘宝
原文连接地址:http://www.9958.pw/post/city_ip function getAddressFromIp($ip){ $urlTaobao = 'http://ip.taoba ...
- tomcat集群学习记录1--初识apache http server
起因 平时开发的时候我都是用eclipse把代码部署到本地tomcat的,当然只会去跑1台tomcat啦... 偶尔有时候解决问题需要去公司测试环境找日志.连上公司测试环境以后发现竟然有2台weblo ...
- 为什么现在更多需要用的是 GPU 而不是 CPU,比如挖矿甚至破解密码?
作者:Cascade链接:https://www.zhihu.com/question/21231074/answer/20701124来源:知乎著作权归作者所有,转载请联系作者获得授权. 想要理解G ...
- [转]PhpStorm 超强语言模板的支持
最近遇到一些PhpStorm编程的问题: 在使用Zen Coding插件时,PHPStorm不像Notepad++那样随便使用.PHPStorm只有在编辑识别为HTML的文件时才可以使用Zend Co ...
- 【转】C# 将字符串或表达式直接转为可执行代码的办法
C# 将字符串或表达式直接转为可执行代码的办法 反射类 using System; using System.Data; using System.Configuration; using Syste ...
- 忘记mysql root 密码修改小技巧
首先我说一下我的情况,我并不是忘记了我的root密码,只不过是我在使用phpmyadmin的时候更改密码的时候选择了如图1 的这个方法将密码加密并更改了,然后就再次登录的时候登录不上,所以对于菜鸟级的 ...
- laravel5 安装笔记
1.环境更新 apt-get update apt-get install php5-cli apt-get install curl 2. Composer安装 curl -sS https://g ...
- IP分片详解
IP分片是网络上传输IP报文的一种技术手段.IP协议在传输数据包时,将数据报文分为若干分片进行传输,并在目标系统中进行重组.不同的链路类型规定有不同最大长度的链路层数据帧,称为链路层MTU(最大传输单 ...