如何查找iOS设备屏幕的动态中心

时间:2012-10-26 14:45:55

标签: iphone xcode ipad screen-orientation uiactivityindicatorview

  

可能重复:
  iOS SDK: Moving the button into the center of screen by code
  UIImageView. Zoom and Center to arbitrary rectangle. Can’t determine correct center on screen

我正在尝试将UIActivityIndi​​cator集中在UIWebView中(它又是UIScrollView的子视图,左侧还有一个UIToolbar元素 - 尽管左侧工具栏并不总是可见)

之前已经提出了类似的问题,但重点是“动态地”找到中心,即改变方向以及左侧工具栏的存在与否。

最好的方法是什么?有没有比覆盖方法shouldAutorotateToInterfaceOrientation更好的方法呢?

2 个答案:

答案 0 :(得分:11)

什么btw的中心?

您可以访问UIViewController的中心self.view.center

或者在您的情况下,UIWebView的中心为yourwebView.center

通过给它调整左上角的元素大小,activityindicator会自动居中。

编辑:

如果你想要通过框架获得的屏幕中心,如

考虑宽度和高度30,30的活动指标。

(([UIScreen mainScreen].bounds.size.width)/2 - 15, ([UIScreen mainScreen].bounds.size.height)/2 - 15, 30, 30);

然后,将自动调整元素设置为无。

转到尺寸检查器并从自动调整大小功能中删除所有箭头。

enter image description here

答案 1 :(得分:1)

您的问题可能无法解决。这是因为只有您知道视图中要忽略的元素。无论您添加哪个元素,视图始终保持不变。因此,我建议为您认为清晰/空/可用的视图部分获取一个矩形,并在其中设置加载指示器。只需获取视图的整个框架(self.view.frame.size.height)并从中减去任何元素。例如

MyIndicator *indicator = [[MyIndicator alloc] initWithFrame:CGRectMake(self.toolbar.frame.size.width + self.toolbar.frame.origin.x, self.topBar.frame.size.height + self.topBar.frame.origin.y, self.view.frame.size.width - self.toolbar.frame.size.width - self.toolbar.frame.origin.x, self.view.frame.size.height - self.topBar.frame.size.height - self.topBar.frame.origin.y)];