gpt4 book ai didi

ios - 强制 UIWebView 重绘?

转载 作者:可可西里 更新时间:2023-11-01 04:23:47 26 4
gpt4 key购买 nike

是否有任何技术可以使 UIWebView 重绘自身?我在 UIWebView 及其 UIScrollView 上尝试了 setNeedsDisplaysetNeedsLayout,但都没有用。

最佳答案

一问就找到了答案。关键是告诉 UIWebViewscrollView 的 subview 重绘自己 - 特别是 UIWebBrowserView

- (void) forceRedrawInWebView:(UIWebView*)webView {
NSArray *views = webView.scrollView.subviews;

for(int i = 0; i<views.count; i++){
UIView *view = views[i];

//if([NSStringFromClass([view class]) isEqualToString:@"UIWebBrowserView"]){
[view setNeedsDisplayInRect:webView.bounds]; // Webkit Repaint, usually fast
[view setNeedsLayout]; // Webkit Relayout (slower than repaint)

// Causes redraw & relayout of *entire* UIWebView, onscreen and off, usually intensive
[view setNeedsDisplay];
[view setNeedsLayout];
// break; // glass in case of if statement (thanks Jake)
//}
}
}

为了安全起见,我已经注释掉了 if 语句,并避免依赖 UIWebBrowserView 的类名不变。没有它,它会点击 ScrollView 中的所有 UIView,这在这一点上并不是真正的问题(不会产生重大开销)但总是可以改变。

编辑:

在某些情况下,以下 JavaScript 片段可以完成相同/相似的事情:

window.scrollBy(1, 1); window.scrollBy(-1, -1);

您可能认为 UIScrollViewcontentOffset 也会这样做,但根据我的经验,情况并非总是如此 - 出于某种原因 window.scrollTo 在这方面很特别。

要点:https://gist.github.com/matt-curtis/5843862

关于ios - 强制 UIWebView 重绘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17257629/

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