自适应需求

如下图所示:一个Grid下面有六个Button,它们需要在不同的分辨下拉伸适应(Horizontal)宽度,以保证填充满底部

要点分析

首先有这两个要点

1、UIGrid中的Cell Width是根据屏幕比例动态调整的

2、NGUI的UICamera有一个onScreenResize 委托

自适应方法

我的布局

1、首先Grid下有六个子Button,Grid的参数设置如下:Cell Width是根据我的图片的大小,这里设置个大概值就好,因为不同分辨率,我们需要动态调整这个值

2、每个子Child即Button都绑定上UIStretch脚本,并把Style设置为Horizontal(水平),其中的Relative Size=1/6 ~=0.16667

测试代码

3、绑定GridTest脚本在Grid上:

using UnityEngine;
using System.Collections; public class GridTest : CUIBase
{
UIGrid btnsGrid;
// Use this for initialization
void Start()
{
btnsGrid = (UIGrid)GetControl<UIGrid>("BtnsGrid");
UIWidget _widget = GetControl<UIWidget>("BtnsGrid/Btn01HomeBtn");
btnsGrid.cellWidth = _widget.width;
btnsGrid.Reposition(); UICamera.onScreenResize += ScreenSizeChanged;
} // Update is called once per frame
void Update()
{ } void ScreenSizeChanged()
{
UIWidget _widget = GetControl<UIWidget>("BtnsGrid/Btn01HomeBtn");
btnsGrid.cellWidth = _widget.width;
btnsGrid.Reposition();//Grid重新进行排序
CBase.Log("size change");
}
}

效果预览

4、点击Play,修改屏幕分辨率,我们可以看到在不同的分辨下,这六个Button都可以完全填充底部区域。

[cb]UIGrid+UIStretch的自适应的更多相关文章

  1. UIGrid+UIStretch的自适应

    http://www.cnblogs.com/zhaoqingqing/p/3891603.html 如下图所示:一个Grid下面有六个Button,它们需要在不同的分辨下拉伸适应(Horizonta ...

  2. 【NGUI】屏幕自适应(不用UIStretch,用UIRoot)---------------good

    原地址:http://blog.csdn.net/lzhq1982/article/details/18814023 这篇文章是转载的,之前用UIStretch做屏幕自适应,但一直有两个硬伤让我难受, ...

  3. ui-grid样式,表格高度自适应行高,没有滚动条,去掉表头

    前后端设置:

  4. [Unity3D]NGUI用Sprite动画和屏幕自适应做游戏开始场景

    我们在玩任何一款手游产品时,都是先上来个logo界面,游戏欢迎界面等,这就意味着我们要做一款游戏需要多个场景,场景之间来回切换实现游戏逻辑,unity也不例外,所以从本篇开始将会介绍如何搭建多个场景, ...

  5. NGUI屏幕自适应

    NGUI确实是非常棒的一个做界面的插件,比起U3D自带的GUI要好很多,当然也有一些不好之处,毕竟什么都不可能那么完美. 最近在用Unity写游戏使用NGUI遇到了一个很多人都在遇到的问题,就是关于屏 ...

  6. 【Unity3D插件】NGUI屏幕自适应(转)

    屏幕自适应 NGUI可以比较方便的实现屏幕自适应,但是它的官方教程里面针对这个问题没有详细的教程,所以可能在实现的时候会走比较多的弯路.以下是我在开发过程中找到的一个比较方便的实现方法. 主要组件 1 ...

  7. UNITY3D使用NGUI制作自适应UI的总结

    原地址:http://www.cnitblog.com/updraft/archive/2013/11/12/88801.html 制作自适应的几个方法1. 使用 UIROOT 里设置自定义高度的方法 ...

  8. Unity3D NGUI自适应屏幕分辨率(2014/4/17更新)

    原地址:http://blog.csdn.net/asd237241291/article/details/8126619 原创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅 本文链接地址: ...

  9. AngularJS表格神器“ui-grid”的应用

    HTML:  (代码仅用于解释得更清楚,并未完全展示) <!doctype html> <html ng-app="app"> <head> & ...

随机推荐

  1. TiDB 部署及数据同步

    简介 TiDB 是 PingCAP 公司受 Google Spanner / F1 论文启发而设计的开源分布式 HTAP (Hybrid Transactional and Analytical Pr ...

  2. es-01-简介

    1, 基于lucene的实时搜索软件 分布式的restful风格的搜索和数据分析引擎, 2, 和kibana, logstash 构成 elk生态圈 es: 数据存储和查询 kibana: 可视化 l ...

  3. Linux LAMP 配置

    一.安装必要的软件 yum install -y update yum install pcre yum install openssl* yum -y install gcc gcc-c++ aut ...

  4. GOROOT、GOPATH和project目录说明

    go env环境查看 用go env 可查看当前go环境变量. $ go env GOARCH="amd64" GOBIN="" GOEXE="&qu ...

  5. PowerBuilder编程新思维5:包装(界面美化与WebUI+React)

    PowerBuilder编程新思维5:包装(界面美化与WebUI+React) 前一节,分析了三种界面美化方案,都是控件级的美化.今天再来分析一下窗口级的美化.上一次讲的DirectUI,大家反响一般 ...

  6. [转]小程序web-view组件

    本文转自:https://www.cnblogs.com/-nothing-/p/7910355.html 1,web-view这个组件是什么鬼? 官网的介绍:web-view 组件是一个可以用来承载 ...

  7. Async和await关键字的用法

    async & await 的前世今生(Updated) 1. 方法打上Async关键字, 就可以使用await调用别的Async方法了 2. 记得在需要异步执行的方法里面调用await或者n ...

  8. Android的Intent你知道多少?

    https://blog.csdn.net/sinat_34383316/article/details/76039483 https://blog.csdn.net/u014492609/artic ...

  9. 走通Django的基本流程

    工程目录及文件的说明 manage.py:一个命令行工具,可以使我们用多种方式对Django项目进行交互 __init__.py:一个空文件,它告诉Python这个文件的上级目录应该看做一个pytho ...

  10. OSGI企业应用开发(十)整合Spring和Mybatis框架(三)

    上篇文章中,我们已经完成了OSGI应用中Spring和Mybatis框架的整合,本文就来介绍一下,如何在其他Bundle中,使用Mybatis框架来操作数据库. 为了方便演示,我们新建一个新的Plug ...