问题描述
我有一个电子邮件应用程序,
它显示 UISplitViewController 内的 UIWebView 中的内容.
一切正常,直到我旋转设备,当已经在 UIWebView 中放大/缩小.旋转设备时,我在
UIWebView 的框架- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 持续时间:(NSTimeInterval)duration
问题是,当我在 UIWebView 中放大/缩小然后旋转设备时.
内容未根据新框架调整大小,这会导致内容中出现灰色/黑色边框,或者内容可以水平滚动.
附加信息:UIWebView 是 UIScrollView 上的子视图,可以滚动.当UIWebView完全可见时,UIScrollView的scrollEnabled被禁用,UIWebView可以滚动.p>
上图是选择邮件时的横向UIWebView.
这是两种情况下轮换前的状态.
[旋转前未缩放]上图显示 UIWebView 正确地将内容调整为新框架.
[旋转前缩放]上图为横向放大后旋转为纵向后的UIWebView-> 内容显示不正确
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation:
中UIWebView.scrollView的信息<_UIWebViewScrollView: 0xb1322a0;帧 = (0 0; 768 960);clipsToBounds = YES;自动调整大小 = H;手势识别器 = <NSArray: 0xb1321d0>;层=<CALayer:0xb132270>;contentOffset: {0, 0}>框架是正确的!
解决方案!!
我设法通过在旋转设备后更新视口宽度来解决它CGFloat fll_width = self.view.frame.size.width;NSString* adsl_javascript_string = [NSString stringWithFormat:@"var setViewPortScript = document.createElement('meta');setViewPortScript.setAttribute('name', 'viewport');setViewPortScript.setAttribute('content', 'width = %f');document.getElementsByTagName('head')[0].appendChild(setViewPortScript);", fll_width];[adsc_webview stringByEvaluatingJavaScriptFromString:adsl_javascript_string];
我设法通过在旋转设备后更新视口宽度来解决它
CGFloat fll_width = self.view.frame.size.width;NSString* adsl_javascript_string = [NSString stringWithFormat:@"var setViewPortScript = document.createElement('meta');setViewPortScript.setAttribute('name', 'viewport');setViewPortScript.setAttribute('content', 'width = %f');document.getElementsByTagName('head')[0].appendChild(setViewPortScript);", fll_width];[adsc_webview stringByEvaluatingJavaScriptFromString:adsl_javascript_string];I have an e-mail application,
which shows the content in an UIWebView inside an UISplitViewController.
Everything works fine until i rotate the device, when already zoomed in/out in the UIWebView.
When rotating the device, i adjust the frame of the UIWebView in
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
The problem is, when i zoomed in/out in the UIWebViewand then rotate the device.
The content isn't resized to it's new frame, which leads to a gray/black border in the content, or the content can be scrolled horizontal.
Addional information:
The UIWebViewis a subview on a UIScrollView which can be scrolled.
When the UIWebViewis totally visible the scrollEnabledof the UIScrollViewis disabled and the UIWebView can be scrolled.
Above picture shows the UIWebViewin landscape when selecting an email.
This is the state before rotating in both cases.
[Not zoomed before rotating]Above picture shows that the UIWebView is correctly resizing the content to it's new frame.
[Zoomed before rotating]Above picture shows the UIWebView after zooming in landscape and then rotating to portrait
-> content isn't correctly shown
Information of the UIWebView.scrollView in
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation:
<_UIWebViewScrollView: 0xb1322a0; frame = (0 0; 768 960); clipsToBounds = YES; autoresize = H; gestureRecognizers = <NSArray: 0xb1321d0>; layer = <CALayer: 0xb132270>; contentOffset: {0, 0}>
frame is correct!
Edit: Solution!!
i managed to solve it by updating the viewport width after rotating the device
CGFloat fll_width = self.view.frame.size.width;
NSString* adsl_javascript_string = [NSString stringWithFormat:@"var setViewPortScript = document.createElement('meta');
setViewPortScript.setAttribute('name', 'viewport');
setViewPortScript.setAttribute('content', 'width = %f');
document.getElementsByTagName('head')[0].appendChild(setViewPortScript);", fll_width];
[adsc_webview stringByEvaluatingJavaScriptFromString:adsl_javascript_string];
i managed to solve it by updating the viewport width after rotating the device
CGFloat fll_width = self.view.frame.size.width;
NSString* adsl_javascript_string = [NSString stringWithFormat:@"var setViewPortScript = document.createElement('meta');
setViewPortScript.setAttribute('name', 'viewport');
setViewPortScript.setAttribute('content', 'width = %f');
document.getElementsByTagName('head')[0].appendChild(setViewPortScript);", fll_width];
[adsc_webview stringByEvaluatingJavaScriptFromString:adsl_javascript_string];
这篇关于旋转后 UIWebView 内容未调整为新框架的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!


大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)