2016-01-05 3 views
2

Я следовал за this учебником для создания WKwebview, который работал, но с одной проблемой. Верхняя строка состояния покрывается содержимым webView.Содержимое WKwebview охватывает верхнюю строку состояния

Поскольку webView IS является контейнером, как тогда webView может перейти под строку состояния в коде. Благодаря

import UIKit 
import WebKit 

class ViewController: UIViewController { 
@IBOutlet var mainView : UIView? 
var webView: WKWebView? 

override func loadView() { 
    super.loadView() // call parent loadView 
    self.webView = WKWebView() // instantiate WKWebView 
    self.view = self.webView! // make it the main view 
} 

override func viewDidLoad() { 
    super.viewDidLoad() // run base class viewDidLoad 
    let url = NSURL(string:"https://www.google.com") // make a URL 
    let req = NSURLRequest(URL:url!) // make a request w/ that URL 
    self.webView!.loadRequest(req) // unwrap the webView and load the request. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

enter image description here}

ответ

2

Я решил ее путем встраивания вид контейнера внутри основного «корня» вид, а затем поместили Webview внутри контейнера и, таким образом был способен управлять отображением контейнера, чтобы быть под Строка состояния, установив его ограничения

Container View.top = Top Layout Guide.bottom

Я Mus Я говорю, что я поражен таким количеством онлайн-уроков, которые могут извлечь выгоду из некоторых способов полировки/обновления, «остерегайтесь чтения», что сложно, когда вы учитесь, вздыхаете.

+0

Не могли бы вы показать код, в котором вы закончили? В частности, меня интересует, как вы добавили контейнер и 'WKWebView'. Вы использовали раскадровку, чтобы добавить контейнер? Заранее спасибо! –

+0

@ Dev-iL Я оставил этот проект, и ржавчина накопилась на моем xCode/swift. Я знаю, что мне очень помогли уроки lynda.com. Извините, не очень помогите. –

1

Я бы добавил WKWebView в качестве подсмотра вида контейнера и использовал размер строки состояния, чтобы начать WKWebView с initWithFrame. Рад узнать, есть ли лучший подход.

WKWebViewConfiguration *webViewConfiguration = [[WKWebViewConfiguration alloc] init]; 
CGFloat heightStatusBar = [UIApplication sharedApplication].statusBarFrame.size.height; 
self.webView = [[WKWebView alloc] initWithFrame:CGRectMake(0.0, heightStatusBar, 
                  self.view.frame.size.width, 
                  self.view.frame.size.height-heightStatusBar) 
            configuration:webViewConfiguration]; 
[self.view addSubview:_webView]; 
1

Вот что закончилось для меня работой (очень похоже на ответ Герберта Бэй).

Swift:

class ViewController: UIViewController, WKNavigationDelegate { 

    let webView = WKWebView() 

    override func viewDidLoad() { 
     // Get height of status bar (iPhone X introduced a new status bar) 
     let statusBarHeight = UIApplication.shared.statusBarFrame.height 
     // Initialize the frame 
     webView.frame = CGRect.init(x: 0, y: statusBarHeight, width: view.bounds.maxX, height: view.bounds.maxY) 
     // Set background color of status bar (optional) 
     self.view.backgroundColor = UIColor(red: 248/255.0, green: 248/255.0, blue: 248/255.0, alpha: 1.0) 
    } 
} 

Установка у в CGRect.init() на высоту строки состояния исключает дублирование вашего веб-просмотра и в строке состояния.

Смежные вопросы