当前位置: 首页 > news >正文

[cb]UIGrid+UIStretch的自适应


文章目录[点击展开](?)[+]

  1. 自适应需求
    1. 要点分析
  2. 自适应方法
    1. 我的布局
    2. 测试代码
    3. 效果预览

自适应需求

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

image

要点分析

首先有这两个要点

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

2、NGUI的UICamera有一个onScreenResize 委托

自适应方法

我的布局

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

image image

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

image

测试代码

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都可以完全填充底部区域。

image image


本文转自赵青青博客园博客,原文链接:http://www.cnblogs.com/zhaoqingqing/p/3891603.html,如需转载请自行联系原作者

相关文章:

  • 对于软件生产能解决到痛点的容器技术就是好!Wise2C睿云智合如何运行
  • 从零开始机器学习001-线性回归数学推导
  • 小白接口(OkayApi.com),免开发,直接可用的云端数据接口
  • C++代码书写规范——给新手程序员的一些建议
  • 成为优秀Java程序员的10大技巧
  • 2.6相对和绝对路径 2.7cd命令 2.8创建和删除目录mkdir/rmdir 2.9rm命令
  • debian 8 解压安装mysql(版本5.7.19)
  • 电脑网络连接问题汇总
  • 线程精进指南之线程池进阶
  • ifdef ANDROID总是不好用
  • 如何阅读slow日志
  • 11.18 Apache用户认证
  • Shell的 for 循环小例子
  • iOS10 之前键盘跳转到设置页面的 url
  • ORA-01012: not logged on
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • GraphQL学习过程应该是这样的
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • java8-模拟hadoop
  • Java编程基础24——递归练习
  • js继承的实现方法
  • Laravel 菜鸟晋级之路
  • python学习笔记-类对象的信息
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 对象引论
  • 构造函数(constructor)与原型链(prototype)关系
  • 精彩代码 vue.js
  • 类orAPI - 收藏集 - 掘金
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 深入浅出Node.js
  • 优秀架构师必须掌握的架构思维
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • const的用法,特别是用在函数前面与后面的区别
  • HanLP分词命名实体提取详解
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 阿里云API、SDK和CLI应用实践方案
  • 第二十章:异步和文件I/O.(二十三)
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​马来语翻译中文去哪比较好?
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (pojstep1.1.2)2654(直叙式模拟)
  • (二)丶RabbitMQ的六大核心
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (利用IDEA+Maven)定制属于自己的jar包
  • (四) 虚拟摄像头vivi体验
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .NET Framework .NET Core与 .NET 的区别
  • .NET4.0并行计算技术基础(1)