这是一个相当常见的问题,但我有一些额外的观点需要注意。其中之一就是我不想让我的酒吧不透明。我喜欢iOS7半透明条。
我在UIImageView
内有一个UIScrollView
,我正在尝试设置初始scrollView.zoomScale
以使图像适合屏幕中的图片,就像照片应用库存一样。这意味着:图像不应被裁剪,应尽可能地填满屏幕。
然而,对于我的应用,由于我有statusBar
,navigationBar
和tabBar
,因此这有点复杂。我会采用解决方案来隐藏它们,直到用户触摸屏幕,但我仍然对于隐藏不可取的解决方案感到好奇。
我正在根据图像高度和视图高度之间的关系计算缩放:
double heightRelation = self.image.size.height / self.view.frame.size.height;
将1 / heightRelation应用于scrollView.zoomScale
后,图像仍然大于有用空间。然后我从文档中找到了statusBar
(20pt),tabBar
(49pt)和navigationBar
(44pt)的iOS7默认高度,还来自:
NSLog(@"status : %f", CGRectGetHeight([[UIApplication sharedApplication] statusBarFrame]));
NSLog(@"tab : %f", self.tabBarController.tabBar.frame.size.height);
NSLog(@"nav : %f", self.navigationController.navigationBar.frame.size.height);
...在玩了一会儿之后,我发现确切的组合是从视图的高度减去statusBar
和navBar
高度:
double heightRelation = self.image.size.height / (self.view.frame.size.height - CGRectGetHeight([[UIApplication sharedApplication] statusBarFrame]) - self.navigationController.navigationBar.frame.size.height);
这适用于肖像模式,但不适用于横向模式。我知道我也可以根据方向设置缩放条件但是...代码可能会变得不必要的丑陋。
所以我问你:获得有用身高的最佳方法是什么?
P.S。:Interface Builder的选项“调整滚动视图插图”无效。
答案 0 :(得分:10)
请勿直接使用酒吧。使用视图控制器的length
和bottomLayoutGuide
的{{1}}属性来确定在条形图下“浪费”了多少视图。这些考虑了导航栏,工具栏,状态栏,标签栏等,并且在调整条形图时由系统维护(例如,在电话/窗格惯用法上旋转到横向后)。