将导航栏或工具栏(故事板)拖动到视图控制器时出现问题.
UINavigationBar的:

如上图所示,右侧按钮几乎与状态栏重叠.
使用UIToolbar它会发生相同的事情:

这个视图控制器旨在用作模态,这就是我没有使用UINavigationController的原因.
在另一节我使用UINavigationController,它看起来像我期望的那样:

如何在不重叠状态栏的情况下将UINavigationBar/UIToolbar拖动到视图控制器?
我试图隐藏状态栏但保持"更大"的导航栏高度.现在,当我通过设置然后调用- (BOOL)prefersStatusBarHidden来隐藏状态栏时.这样做的问题是导航栏会向上滑动,不会为我试图显示的通知留出空间.只是在状态栏上添加视图不是一个选项,我们的状态栏/导航具有花哨的模糊效果.有没有人知道如何使用状态栏高度维护标准导航栏高度并从中删除状态栏?YES[self setNeedsStatusBarAppearanceUpdate];
编辑; 我最终做的是冒险并通过私有API获取状态栏的UIWindow并抵消它.
编辑2; 应用程序已获得私有API批准.但要小心!
我有一个简单的iPad应用程序,MasterviewController有一个tableview和一个包含UIWebView的DetailViewController.然后我在我的Storyboard中拖放了一个SplitViewController,将它与我的Master和Detail控制器连接起来.在MasterViewController中我使用以下内容:
- (void) awakeFromNib
{
self.splitViewController.delegate = self;
}
- (BOOL) splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation
{
return NO;
}
Run Code Online (Sandbox Code Playgroud)
目前看起来如下:

一切都很好.我想要做的是使用DetailViewController左上角的按钮隐藏和取消隐藏MasterViewController,就像iPad Mail应用程序一样.
我发现了一些与此问题相关的问题,但他们并没有像我一样只是在Storyboard中拖动它并编写几行代码来创建SplitView,所以不要将它标记为重复或类似的东西.
注意:请不要建议使用MGSplitViewController或任何其他第三方库.提前致谢.
MasterViewController嵌入在导航控制器中.虽然DetailViewController上面有一个手动添加的顶栏,因为当在SplitView中添加全部内容时,它会丢失顶部的导航栏.我所知道的是,我可以在DetailView的顶部栏上创建一个IBAction按钮,但不知道如何触发隐藏和取消隐藏功能.
我有一个包含一些标签的视图控制器和一个在其中加载一些html的UIWebView.所有这些标签和UIWebView都是UIScrollView的子视图.我已禁用UIWebView的滚动,因此标签和UIWebView在UIScrollView中一起滚动.
然后我找到了UiWebView内部的内容大小,根据内容大小更改了UIWebView大小,然后将滚动视图的大小设置为webview的大小.这是我通过在webViewDidFinishLoad中添加以下代码来实现的:
CGRect frame = myWebView.frame;
frame.size.height = 1;
myWebView.frame = frame;
CGSize fittingSize = [myWebView sizeThatFits:CGSizeZero];
frame.size = fittingSize;
myWebView.frame = frame;
NSLog(@"size: %f, %f", fittingSize.width, fittingSize.height);
mainScrollView.contentSize = myWebView.bounds.size;
Run Code Online (Sandbox Code Playgroud)
当我使用NSLog来查看webview内容的大小时,我注意到它为相同的内容提供了不同的高度.例如,如果我第一次打开视图控制器,它会显示高度等于915.0,当我在导航中向后移动并返回到该视图控制器时,日志将显示大小为1012.0.
我相信这可能是由于html内容中的图片加载.任何人都可以告诉我如何修复它以便第一次显示正确的高度?谢谢!
更新:如果我使用javascript使用不同的策略,我已经尝试使用以下代码:
CGRect oldBounds = [[self myWebView] bounds];
CGFloat height = [[myWebView stringByEvaluatingJavaScriptFromString:@"document.height"] floatValue];
NSLog(@"NEW HEIGHT %f", height);
[myWebView setBounds:CGRectMake(oldBounds.origin.x, oldBounds.origin.y, oldBounds.size.width, height)];
mainScrollView.contentSize = myWebView.bounds.size;
Run Code Online (Sandbox Code Playgroud)
这段代码每次在日志中给我正确的高度,这正是我想要的,但整个webview向上移动了一点,阻止了它上面的所有标签.我做错了什么以及如何解决它?谢谢!
ios ×3
ios7 ×2
objective-c ×2
ipad ×1
uiscrollview ×1
uistatusbar ×1
uistoryboard ×1
uitoolbar ×1
uiwebview ×1
xcode ×1