我有一个问题,但我真的不知道如何解决它,我正在使用objective-c开发一个IOS应用程序,每当打开个人热点时,View就被推到它下面(所以我输了就像20px我的navigationBar),我试图在网上找到一个解决方案,但我找不到,有人可以给我任何关于如何解决这个问题的建议吗?
修改 问题应该是我用于幻灯片菜单的这个库: https://github.com/aryaxt/iOS-Slide-Menu 我的根视图控制器有类SlideNavigationController,我试图删除它,并且视图没有像以前那样被推高..有没有人有类似的问题?
答案 0 :(得分:3)
这是因为幻灯片菜单在激活时始终将self.view.frame.origin.y
设置为0。
要解决此问题,您需要根据状态栏的高度手动调整偏移量。
您可以在rect.origin.y = 0
中找到SlideNavigationController.m
个moveHorizontallyToLocation
,其中一个位于initialRectForMenu
(它正在处理'推动'动画)和另一个是0
(帧的初始化方法)。您需要将- (float)offsetFromTop {
UIView *view = self.view;
CGRect statusBarFrame = [[UIApplication sharedApplication] statusBarFrame];
CGRect statusBarWindowRect = [view.window convertRect:statusBarFrame fromWindow:nil];
CGRect statusBarViewRect = [view convertRect:statusBarWindowRect fromView:nil];
float fullHeight = statusBarViewRect.size.height;
float offset = fullHeight;
if (![UIApplication sharedApplication].statusBarHidden) {
offset -= STATUS_BAR_HEIGHT;
}
return offset;
}
更改为这两行的正确偏移量。
可以找到计算偏移量的实现here。
rect.origin.y = [self offsetFromTop];
然后用sed 's/"\[/\[/; s/\]"/\]/' file.json
答案 1 :(得分:1)
我也面临同样的问题,比如当我打开热点我的视图正在下降(20 px),如果我删除热点myview被打扰(这里我使用3个单独的视图,如Titlabar,scrollview和bottomview ..)
问题是当你连接到热点时,那时“状态栏”高度增加了。因此,观点正在向下推进。
Solu:这里基于状态栏高度,我们正在更新UIView布局,如下所示....
在 viewdidload 中编写以下代码:
-(void)viewdidload
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didStatusBarFrameChanged) name:UIApplicationDidChangeStatusBarFrameNotification object:nil];
}
-(void)didStatusBarFrameChanged
{
CGRect barFrame = [UIApplication sharedApplication].statusBarFrame;
NSLog(@"didStatusBarFrameChanged %@", NSStringFromCGRect(barFrame));
[self updatePageViewLayouts];
}
注意:这里使用“ UIApplicationDidChangeStatusBarFrameNotification ”这个,我们正在获取状态栏高度更新Notification.so,因为你可以增加/减少20px的视图大小(高度)。