今天项目开发过程中,碰到了要将一个UIActivityIndicatorView放到屏幕中间,最开始的如下:
m_activityIndicator.frame = CGRectMake(([UIScreen mainScreen].bounds.size.height -40)/2,([UIScreen mainScreen].bounds.size.width -40 )/2,40,40);
[self.view addSubview:m_activityIndicator];
屏幕是横向的,发现,垂直方向不在中间,而是向下偏移了。追其原因是,ios7是全屏幕坐标系统,导航栏自己就由一个self.navigationController.view,self.navigationController.view的frame是(0,20,568,44);而self.view 的frame为(0,64,560,320-64)因此如果想将视图添加到self.view正中间的话,需要减去64.代码如下:
m_activityIndicator.frame = CGRectMake(([UIScreen mainScreen].bounds.size.height -40)/2,([UIScreen mainScreen].bounds.size.width -40 - 64)/2,40,40);
[self.view addSubview:m_activityIndicator];
m_activityIndicator.frame = CGRectMake(([UIScreen mainScreen].bounds.size.height -40)/2,([UIScreen mainScreen].bounds.size.width -40)/2,40,40);
[self.navigationcontroller.view addSubview:m_activityIndicator];