【问题标题】:Set frame of UIVIew so its not hidden by navigation bar设置 UIVIew 的框架,使其不被导航栏隐藏
【发布时间】:2015-09-30 13:30:44
【问题描述】:

我正在以编程方式推送到加载 Web 视图的视图控制器,并像这样设置 Web 视图

NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:self.url]];
[self.webView loadRequest:urlRequest];
self.webView.frame = CGRectMake(0, 64, 320, 600);
self.webView.delegate = self;

它看起来不错,我将 y 设置为 64,使其位于导航栏下方,但是当我点击 web 视图或缩放时,web 视图又向下移动了 64 个点?

为什么会这样?但是,如果我在开头self.webView.frame = CGRectMake(0, 0, 320, 600); 将网络视图设置为此,那么在我点击 webivew 之前,它的一部分将被导航栏隐藏。

我该如何解决这个问题?

感谢您的帮助:)

【问题讨论】:

  • 你试过self.navigationController.navigationBar.translucent = NO; 是否适用于 iOS 7 及更高版本
  • @Aladin 我希望导航栏在那里,我只希望网络视图在它下方
  • 是的,应该可以解决问题
  • @Aladin 哇,我已经尝试解决这个问题好几个小时了,self.navigationController.navigationBar.translucent = NO; 做了什么?
  • 我要写 self.edgesForExtendedLayout = UIRectEdgeNone; 而不是 self.navigationController.navigationBar.translucent = NO; 这有助于在 iOS 7 上获得一个不透明的 UINavigationBar

标签: ios objective-c webview uiwebview uiscrollview


【解决方案1】:

来自UIViewController Class Reference

用于布局的扩展边缘。 @property(nonatomic, assign) UIRectEdge edgesForExtendedLayout

在您的 viewDidLoad 方法中:

 if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) {
   self.edgesForExtendedLayout = UIRectEdgeNone; 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多