Objective c 隐藏状态栏:对边界的影响

Objective c 隐藏状态栏:对边界的影响,objective-c,ios,uiscrollview,Objective C,Ios,Uiscrollview,我正在阅读Big Nerd Ranch的iOS编程书(第三版),其中有一个特别的例子,它涉及嵌入在全屏UIScrollView中的全屏图像。二者的创建方式如下: self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; CGRect screenRect=[[self window] bounds]; UIScrollView *scrollView=[[UIScrollView alloc] i

我正在阅读Big Nerd Ranch的iOS编程书(第三版),其中有一个特别的例子,它涉及嵌入在全屏UIScrollView中的全屏图像。二者的创建方式如下:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
CGRect screenRect=[[self window] bounds];
UIScrollView *scrollView=[[UIScrollView alloc] initWithFrame:screenRect];
view=[[HypnosisView alloc] initWithFrame:screenRect];
我们被要求使用以下行使状态栏消失:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
一切正常,但我不明白的是:为什么不管状态栏是否存在,窗口的边界都是相同的?它们总是(0,0320568),但如果我隐藏状态栏,我会预期高度会缩小


感谢阅读。

[UIScreen mainScreen]bounds]
始终返回设备的帧,无论您的应用程序是显示还是隐藏状态栏,该帧对设备都是相同的。

[UIScreen mainScreen]边界]
始终返回设备的,无论您的应用程序是显示还是隐藏状态栏,该帧始终与设备相同。

感谢您的回复。那么这是否意味着当存在状态栏时,
滚动视图
视图
实际上在可视屏幕之外有内容?@Rogare是的,如果您将滚动视图和视图的框架设置为
[UIScreen mainScreen]边界的框架,则您是正确的。但是通常,当你计划显示状态栏时,如果你想让视图和滚动视图都覆盖整个屏幕,你会设置一个小于状态栏高度的高度。好吧,我想他们只是为了简单起见在书中避免了这一点。谢谢谢谢你的回复。那么这是否意味着当存在状态栏时,
滚动视图
视图
实际上在可视屏幕之外有内容?@Rogare是的,如果您将滚动视图和视图的框架设置为
[UIScreen mainScreen]边界的框架,则您是正确的。但是通常,当你计划显示状态栏时,如果你想让视图和滚动视图都覆盖整个屏幕,你会设置一个小于状态栏高度的高度。好吧,我想他们只是为了简单起见在书中避免了这一点。谢谢