可能重复:
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
我正在尝试将UIActivityIndicator集中在UIWebView中(它又是UIScrollView的子视图,左侧还有一个UIToolbar元素 - 尽管左侧工具栏并不总是可见)
之前已经提出了类似的问题,但重点是“动态地”找到中心,即改变方向以及左侧工具栏的存在与否。
最好的方法是什么?有没有比覆盖方法shouldAutorotateToInterfaceOrientation
更好的方法呢?
答案 0 :(得分:11)
您可以访问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);
然后,将自动调整元素设置为无。
转到尺寸检查器并从自动调整大小功能中删除所有箭头。
答案 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)];