iOS UIWebView闪烁问题(iOS UIWebView flicker issue)

编程入门 行业动态 更新时间:2024-10-12 03:17:54
iOS UIWebView闪烁问题(iOS UIWebView flicker issue)

我在同一个屏幕上有一个UIWebView和一个轻扫手势。 当我正在刷卡时,我正在重新加载webview,因为如果我不这样做,则不会调用js。

重新加载只工作一次, 我无法再次刷卡

当我删除[self.webview reload]刷卡很好,但UIWebView保持闪烁。 它每次都跳起来! 我每次刷卡都需要打电话给js。

我试过这些:

方法1:

when loading webview: self.webview.alpha = 0; - (void)webViewDidFinishLoad:(UIWebView *)webView { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.30]; self.webview.alpha = 1; [UIView commitAnimations]; }

方法2:

- (void)webViewDidFinishLoad:(UIWebView *)webView { [self.webview setOpaque:NO]; self.webview.backgroundColor = [UIColor clearColor]; }

方法3:

- (void)viewDidLoad { [super viewDidLoad]; [self.webview loadHTMLString:@"<html><body style=\"background-color:black;\"></body></html>" baseURL:nil]; [self performSelector:@selector(loadWebview) withObject:nil afterDelay:0.1]; } -(void)loadWebview { self.webview.delegate = self; self.webview.scrollView.delegate = self; self.webview.scrollView.bounces = NO; self.webview.scrollView.scrollsToTop = NO; [self.view addSubview:self.webview]; pathToHtml = [[NSBundle mainBundle] pathForResource:@"mypath" ofType:@"html"]; NSString* appHtml = [NSString stringWithContentsOfFile:pathToHtml encoding:NSUTF8StringEncoding error:nil]; NSURL *baseURL = [NSURL fileURLWithPath:pathToHtml]; [self.webview loadHTMLString:appHtml baseURL:baseURL]; }

需要帮忙!

I have a UIWebView and a swipe gesture in the same screen. When I'm swiping, I am reloading the webview, because if I don't, the call to js is not being made.

The reload works only once, I am unable to swipe again.

When I removed [self.webview reload]swiping is done fine, but the UIWebView keeps flickering. It just jumps up everytime! I need to make a call to js everytime I swipe.

I tried these:

Method 1:

when loading webview: self.webview.alpha = 0; - (void)webViewDidFinishLoad:(UIWebView *)webView { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.30]; self.webview.alpha = 1; [UIView commitAnimations]; }

Method 2:

- (void)webViewDidFinishLoad:(UIWebView *)webView { [self.webview setOpaque:NO]; self.webview.backgroundColor = [UIColor clearColor]; }

Method 3:

- (void)viewDidLoad { [super viewDidLoad]; [self.webview loadHTMLString:@"<html><body style=\"background-color:black;\"></body></html>" baseURL:nil]; [self performSelector:@selector(loadWebview) withObject:nil afterDelay:0.1]; } -(void)loadWebview { self.webview.delegate = self; self.webview.scrollView.delegate = self; self.webview.scrollView.bounces = NO; self.webview.scrollView.scrollsToTop = NO; [self.view addSubview:self.webview]; pathToHtml = [[NSBundle mainBundle] pathForResource:@"mypath" ofType:@"html"]; NSString* appHtml = [NSString stringWithContentsOfFile:pathToHtml encoding:NSUTF8StringEncoding error:nil]; NSURL *baseURL = [NSURL fileURLWithPath:pathToHtml]; [self.webview loadHTMLString:appHtml baseURL:baseURL]; }

Need help!

最满意答案

我发现我在我的webViewDidFinishLoad有这个:

//Make the page fit to view. THIS IS BAD CGRect webviewBound = self. webview.bounds; webviewBound.size.height = self. webview.scrollView.contentSize.height; self. webview.bounds = webviewBound;

所以我删除了它并添加:

[self.webview.scrollView setContentSize: CGSizeMake(self.webview.frame.size.width, self.webview.scrollView.contentSize.height)]; self.webview.scrollView.delegate = self;

我在viewDidLoad添加了这个,因为我有灰色背景:

//Removes the shadow from the webview i.e., "grey background" if ([[self.webview subviews] count] > 0) { for (UIView* shadowView in [[[self.webview subviews] objectAtIndex:0] subviews]) { [shadowView setHidden:YES]; } // unhide the last view so it is visible again because it has the content [[[[[self.webview subviews] objectAtIndex:0] subviews] lastObject] setHidden:NO]; }

I found out that I had this in my webViewDidFinishLoad :

//Make the page fit to view. THIS IS BAD CGRect webviewBound = self. webview.bounds; webviewBound.size.height = self. webview.scrollView.contentSize.height; self. webview.bounds = webviewBound;

So I removed that and added:

[self.webview.scrollView setContentSize: CGSizeMake(self.webview.frame.size.width, self.webview.scrollView.contentSize.height)]; self.webview.scrollView.delegate = self;

And I added this in viewDidLoad because I had grey background:

//Removes the shadow from the webview i.e., "grey background" if ([[self.webview subviews] count] > 0) { for (UIView* shadowView in [[[self.webview subviews] objectAtIndex:0] subviews]) { [shadowView setHidden:YES]; } // unhide the last view so it is visible again because it has the content [[[[[self.webview subviews] objectAtIndex:0] subviews] lastObject] setHidden:NO]; }

更多推荐

本文发布于:2023-07-31 08:19:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1342493.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:UIWebView   iOS   issue   flicker

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!