6赞
571
当前位置:  开发笔记 > 编程语言 > 正文

UIGrid+自适应

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

如下图所示:一个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("BtnsGrid");
        UIWidget _widget = GetControl("BtnsGrid/Btn01HomeBtn");
        btnsGrid.cellWidth = _widget.width;
        btnsGrid.Reposition();

        UICamera.onScreenResize += ScreenSizeChanged;
    }

    // Update is called once per frame
    void Update()
    {

    }

    void ScreenSizeChanged()
    {
        UIWidget _widget = GetControl("BtnsGrid/Btn01HomeBtn");
        btnsGrid.cellWidth = _widget.width;
        btnsGrid.Reposition();//Grid重新进行排序    
        CBase.Log("size change");
    }
}

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

, ,

UIGrid+自适应,,

UIGrid+自适应


推荐阅读
author-avatar
手机用户2502927973
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有