gpt4 book ai didi

ios - iOS 8 中的 UIWebView 内容大小

转载 作者:可可西里 更新时间:2023-11-01 05:44:08 24 4
gpt4 key购买 nike

我正在尝试在小于屏幕的 WebView 中显示一些内容。这适用于 iOS 7,但在 iOS 8 中,Web View 似乎会自动将 Web View 的内容大小设置为屏幕大小。我怎样才能说服 UIWebView 在 iOS 8 中使用 View 大小作为内容大小?

我创建了一个最小示例来说明问题。从 Xcode 的单 View iPad 模板开始,我添加了一个 480 像素高和 320 像素宽的 Web View ,位于父 View 的中心。我将其连接到现有 View Controller 中的 webView socket 。然后,我向 -viewDidLoad 添加了一些代码,以将 .mp4 视频加载到 Web View 中。完整代码如下:

@interface ViewController ()

@property IBOutlet UIWebView *webView;

@end

NSString *const videoURL = @"https://dl.dropboxusercontent.com/u/29161243/Mahalo%2520Surf%2520Eco%2520Festival%25202014%2520-%2520Day%25204-SD.mp4";

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];

NSURL *url = [NSURL URLWithString:videoURL];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
}

- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}

@end

在 iOS 7 下,这正是我想要的。结果如下所示:

iOS7 correctly displays the content

然而,在 iOS 8 下,视频被放大并向下移动;看起来内容大小与屏幕大小相同,内容的来源在我的 WebView 的来源:

iOS8 enlarges the content

如何在 iOS 8 中获得 iOS 7 的行为?或者,如何调整 Web View 内容的大小?

即使在 iOS 7 下,UIWebView 也经常以大于 WebView 框架的尺寸显示某些内容(例如 HTML 页面)。我还想了解如何让 WebView 缩放此类内容,以便它完全在 WebView 的宽度内绘制,但现在与让视频内容缩放到 View 相比,这是次要问题。

最佳答案

将您的 viewDidLoad 方法更改为:

- (void)viewDidLoad {
[super viewDidLoad];
self.webView.mediaPlaybackRequiresUserAction = NO;
NSString *videoHTML= [NSString stringWithFormat: @"<style type='text/css'>body { margin:0;background-color:black}</style><video width='%f' height='%f' frameborder='0' controls autoplay><source src=\"%@\" type=\"video/mp4\"></video><meta name='viewport' content='width=device-width, initial-scale=1,user-scalable=no,minimum-scale=1.0, maximum-scale=1.0'>", self.webView.frame.size.width, self.webView.frame.size.height,videoURL];
[self.webView loadHTMLString:videoHTML baseURL:nil];
}

虽然该 html 中发生了很多事情,但关键是:

<meta name='viewport' content='width=device-width, initial-scale=1,user-scalable=no,minimum-scale=1.0, maximum-scale=1.0'> 

与默认版本:

<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">

我们在 iOS8 中遇到了一个类似的问题,这解决了它。我还尝试了您的示例代码,它也修复了它。

您可以在这里阅读有关视口(viewport)的资料:https://developer.apple.com/library/IOS/documentation/AppleApplications/Reference/SafariWebContent/UsingtheViewport/UsingtheViewport.html

希望这对您有所帮助!

关于ios - iOS 8 中的 UIWebView 内容大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26680296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com