【发布时间】:2013-05-26 13:41:05
【问题描述】:
我像往常一样将 UIImageView 添加到 UIViewController 的 UIView 中,图像视图的框架与 self.view 相同,以确保图像将覆盖整个视图。但是,状态栏和 imageView 之间有大约 20 像素的填充,我似乎无法摆脱。
我已经尝试 NSLogging 不同的帧,并收到以下结果:
NSLog(@"ImageView => %@", NSStringFromCGRect([imageView frame]));
NSLog(@"self.view => %@", NSStringFromCGRect(self.view.frame));
NSLog(@"Screen Bounds => %@", NSStringFromCGRect([[UIScreen mainScreen] bounds]));
NSLog(@"App window => %@", NSStringFromCGRect([[[[UIApplication sharedApplication] delegate] window] frame]));
[LaunchViewController.m: line 26] ImageView => {{0, 0}, {320, 548}}
[LaunchViewController.m: line 27] self.view => {{0, 0}, {320, 548}}
[LaunchViewController.m: line 28] Screen Bounds => {{0, 0}, {320, 568}}
[LaunchViewController.m: line 29] App window => {{0, 0}, {320, 568}}
结果表明,图像视图实际上应该覆盖self.view,并且在其自身和状态栏之间根本没有填充。
UIViewController 是 UINavigationController 的根视图控制器,我已将导航栏设置为隐藏。我认为这可能是导致问题的原因,但是在删除 UINavigationController 并将其替换为 UIViewController 后,填充仍然存在。
有没有人对删除填充有任何建议/以前遇到过这个问题并有解决办法?
这是显示正在发生的事情的图像 - 绿色区域是 UIView (self.view),橙色区域是 UIImageView。
[self.navigationController setNavigationBarHidden:YES];
[self.view setBackgroundColor:[UIColor greenColor]];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.view.frame];
[imageView setImage:[UIImage imageNamed:@"Orange-568h@2x.png"]];
[self.view addSubview:imageView];
【问题讨论】:
-
您是在 viewDidLoad 还是 viewDidAppear 上执行此操作?
-
-viewDidLoad - 在调用super之前。
-
尝试将其移动到 viewDidAppear,在 viewDidLoad 上,如果您使用的是 xib,则视图大小基于 xib 的视图。
-
至少尝试将您的 nslog 移动到 viewDidAppear。您应该检测到变化。
-
NSLogs 显示 mainScreen 和 self.view 的框架之间实际上存在 20px 的差异
标签: ios objective-c uiview uiimageview