转自 http://blog.sina.com.cn/s/blog_76f3236b01013zmk.html
1、CGRectInset
CGRect CGRectInset (
CGRect rect,
CGFloat dx,
CGFloat dy
);
该结构体的应用是以原rect为中心,再参考dx,dy,进行缩放或者放大。
图中的每一个矩形都是以上一个矩形作为参考矩形。所以下一矩形(比如黄色矩形对绿色矩形来说是下一个矩形)都比上一个矩形要小。 具体小多少都是要参照dx和dy来判定的。
2、CGRectOffset
CGRect CGRectOffset(
CGRect rect,
CGFloat dx,
CGFloat dy
);
相对于源矩形原点rect(左上角的点)沿x轴和y轴偏移, 再rect基础上沿x轴和y轴偏移
float offset = 125.0;
CGRect r1 = CGRectMake(100, 100, 5, 5);
CGRect r2 = CGRectOffset(r1, offset, offset);
3、frame和dounds
frame和bounds是UIView中的两个属性(property)。
-(CGRect)frame{
return CGRectMake(self.frame.origin.x,self.frame.origin.y,self.frame.size.width,self.frame.size.height);
}
-(CGRect)bounds{
return CGRectMake(0,0,self.frame.size.width,self.frame.size.height);
}
frame指的是:该view在父view坐标系统中的位置和大小。(参照点是父亲的坐标系统)
bounds指的是:该view在本身坐标系统中 的位置和大小。(参照点是本身坐标系统)
Unity 中实现中断实现:
此处代码每一次执行的时候都只会等待一帧的执行时间。
while(true){ //执行代码1 yield;//等待一帧 //执行代码2 }
接下来可以让代码等待的时间由我们来定义:
while(true){ //执行代码1 yield WaitForSeconds(10.0);//等待10秒后执行代码2 //执行代码2 }
Unity 中断与协同程序的实现如下:
yield StartCoroutine("Method");//连接协同程序 Debug.log("提示信息1"); function Method(){ Debug.log("提示信息2"); yield WaitForSeconds(10);//程序中断执行10秒 Debug.log("提示信息3"); }
在任何时间处理程序都是协同程序,但是不能Update()和FixUpdate()方法中使用协同程序,否则报错。
Unity关卡加载
function Start () { yield WaitForSeconds(10.0);//程序中断10秒后,在执行 Application.LoadLevel("MainMenu");//执行加载MainMenu关卡 Destroy(this);//销毁当前关卡对象 }
运行结果如下图
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
// pre-condition
return;
}
int totalHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
}