【发布时间】:2014-03-04 18:53:03
【问题描述】:
简介
这是一个相当常见的问题,但是我有一些额外的要点需要注意。其中之一是我不想让我的酒吧不透明。我喜欢iOS7的半透明条。
我在UIScrollView 中有一个UIImageView,我正在尝试设置初始scrollView.zoomScale 以适应屏幕中的图像,就像库存照片应用程序一样。这意味着:图像不应该被裁剪,应该尽可能地填满屏幕。
但是对于我的应用程序来说,这有点复杂,因为我可以看到 statusBar、navigationBar 和 tabBar。在用户触摸屏幕之前,我将采用隐藏它们的解决方案,但是当不希望隐藏时,我仍然对解决方案感到好奇。
到此为止
我目前正在根据图像高度和视图高度之间的关系计算缩放:
double heightRelation = self.image.size.height / self.view.frame.size.height;
对scrollView.zoomScale 应用 1/heightRelation 后,图像仍然大于可用空间。然后我从文档中找到了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 的“调整滚动视图插图”选项无效。
【问题讨论】:
标签: objective-c xcode ios7 uinavigationbar uitabbar