NGUI之UIGrid自适应屏幕

今天做项目遇到了一个很无奈的事. 在使用NGUI做Scroll View功能时我在Scroll View下面使用了UIGrid进行排列拖动项.

但是最后发现UIGrid居然不可以设置锚点.每个可拖动项也不可以设置锚点,因为即使加了脚本后可以设置也会出现问题,运行后拖动选择项会出现抖动现象,因为他们是有锚点的会根据位置调整一下,出现抖动的反应.

后来我发现虽然不可以在UIGrid上设置锚点但是可以控制UIGrid上Transform的大小这样里面的选择项也会跟着放大和缩小了.找到方法后我开始想怎么实现它最好.然后我找到了UIStretch这个脚本,可根据设置改变对象的大小.但上面的设置选项并没有符合我要求的选项.索性我就自己加了一条.

//首先在脚本的前面加入一个选择项
public enum Style
	{
		None,
		Horizontal,
		Vertical,
		Both,
		BasedOnHeight,
                BasedOnWidth,//fgreen加入的代码;
		FillKeepingRatio, 
		FitInternalKeepingRatio 
	}

//然后在UPDATE里面加入if判断根据自己设置的默认宽高进行比例缩放
  if (style == Style.BasedOnHeight)
  {
   size.x = relativeSize.x * rectHeight;
   size.y = relativeSize.y * rectHeight;
  }
 else if (style == Style.BasedOnWidth)//fgreen加入的代码
 {
    size.x = relativeSize.x * Screen.height/854;//我项目中设置默认的是854的高和480的宽;
    size.y = relativeSize.y * Screen.width/480;//当屏幕宽带大于或小于它们时求它们的除数;
    size.z = size.x;
 }