我使用Swift在xCode中创建一个webview。现在我想要一些屏幕力旋转到横向的页面。还有一些页面自动定位。我怎么能这样做?
更新
我在Reinier的回答后做了这个:
func loadAddressURL(){
let requestURL = NSURL(string: URLPath)
let request = NSURLRequest(URL: requestURL!)
//url name another will show in landscape mode
if(request.URL?.absoluteString == baseUrl + "dashboard")
{
print(request.description)
if(UIDevice.currentDevice().orientation != UIDeviceOrientation.LandscapeRight)
{
let value = UIInterfaceOrientation.LandscapeRight.rawValue
UIDevice.currentDevice().setValue(value, forKey: "orientation")
}
}
WebView.loadRequest(request)
但它不起作用。当我将设备变为肖像时,应用程序会旋转为纵向,但我想强制横向显示。
答案 0 :(得分:2)
我一直在研究你的问题,这是我的结果,首先你需要在加载新URL的事件发生时通知这个方法你可以实现这个,当然你需要设置为委托你的webView查看你的viewController,然后实现这个方法
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool
这是代码
要保持这种方向,您需要实现此方法func supportedInterfaceOrientations() -> UIInterfaceOrientationMask
并在一个变量中保留您想要的方向
夫特
import UIKit
class ViewController: UIViewController,UIWebViewDelegate {
@IBOutlet weak var webView: UIWebView!
var termsWeb = false
var validOrientation : UIInterfaceOrientationMask = UIInterfaceOrientationMask.Portrait
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.loadWebView()
}
@IBAction func loadAnotherWeb(sender: AnyObject) {
self.loadWebView()
}
func loadWebView()
{
let termsFilePath = NSBundle.mainBundle().pathForResource("terms_conditions", ofType: "html")
do
{
var URLname = ""
if(termsWeb)
{
URLname = "terms"
termsWeb = !termsWeb
}else
{
URLname = "another"
termsWeb = !termsWeb
}
let html = try String(contentsOfFile: termsFilePath!)
webView.loadData(html.dataUsingEncoding(NSUTF8StringEncoding)!, MIMEType: "text/html", textEncodingName: "utf-8", baseURL: NSURL(string: URLname)!)
}catch
{
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
internal func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool
{
//url name another will show in landscape mode
if(request.URL?.absoluteString == "file://terms")
{
print(request.description)
if(UIDevice.currentDevice().orientation != UIDeviceOrientation.LandscapeRight)
{
let value = UIInterfaceOrientation.LandscapeRight.rawValue
self.validOrientation = .Landscape
UIDevice.currentDevice().setValue(value, forKey: "orientation")
}
}
//url name another will show in all modes
if(request.URL?.absoluteString == "file://another")
{
self.validOrientation = .All
}
return true
}
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return self.validOrientation
}
}
我希望这有助于你