gpt4 book ai didi

objective-c - iOS7 - 获取UIView的有用高度(不包括statusBar、navigationBar和tabBar)

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:58 25 4
gpt4 key购买 nike

介绍

这是一个相当普遍的问题,但我有一些额外的要点需要观察。其中之一是我不想让我的酒吧不透明。我喜欢 iOS7 的半透明条。

我在 UIScrollView 中有一个 UIImageView,我正在尝试设置初始 scrollView.zoomScale 以适应图像屏幕就像股票照片应用程序一样。这意味着:图像不应被裁剪,应尽可能填满屏幕。

但是对于我的应用来说,这有点复杂,因为我有可见的 statusBarnavigationBartabBar。我将采用隐藏它们的解决方案,直到用户触摸屏幕,但我仍然对隐藏不合需要的解决方案感到好奇。

到目前为止完成

我目前正在根据图像高度和 View 高度之间的关系计算缩放比例:

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);

...玩了一会儿之后,我发现确切的组合是从 View 的高度中减去 statusBarnavBar 的高度:

double heightRelation = self.image.size.height / (self.view.frame.size.height - CGRectGetHeight([[UIApplication sharedApplication] statusBarFrame]) - self.navigationController.navigationBar.frame.size.height);

这对于人像模式非常有用,但对于风景模式则不然。我知道我也可以根据方向设置缩放的条件,但是......代码可能变得不必要地丑陋。

所以我问你:获得有用高度的最佳方法是什么?

附注:Interface Builder 的选项“Adjust Scroll View Insets”无效。

最佳答案

不要直接使用bars。使用 View Controller 的 bottomLayoutGuidetopLayoutGuidelength 属性来确定在条形图下“浪费”了多少 View 。这些考虑了导航栏、工具栏、状态栏、标签栏等,并在调整栏大小时(例如,在电话/pod 习语中旋转为横向后)由系统维护。

关于objective-c - iOS7 - 获取UIView的有用高度(不包括statusBar、navigationBar和tabBar),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22180448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com