我有UIWebView
我通过
// First the timer is called.
[NSTimer scheduledTimerWithTimeInterval:scrollerTimerInterval
target:self
selector:@selector(_autoScrollTimerMethod)
userInfo:nil
repeats:YES];
- (void) _autoScrollTimerMethod{
scrollerTimerCount++;
CGFloat offset = scrollerTimerCount * 1;
uiWebView.scrollView.contentOffset = CGPointMake(0, offset);
}
uiWebView的类型为UIWebView
此代码会自动滚动uiWebView,但速度太慢。程序的另一部分有一个闪烁,当该代码被注释掉时不会发生。
欢迎任何建议。
干杯,
答案 0 :(得分:3)
所以我想我想出了一个可能做你需要的解决方案。基本上,我在UIScrollView中创建了一个UIWebView。我不得不这样做,因为否则UIWebView本身就不能完全呈现动画的原因,你会获得大部分白色(webview的未渲染部分)。因此,在Interface Builder中,添加一个带有webview的scrollview,然后将它们连接到IBOutlets。
您还需要ViewController来实现UIWebViewDelegate
协议。
@interface ViewController : UIViewController <UIWebViewDelegate>
@end
在viewDidLoad中,(或界面构建器)连接webview的委托:
self.webView.delegate = self;
然后在网页浏览中加载网址:
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://stackoverflow.com/questions/"]]];
webview完成加载后,我们会将其框架扩展到contentSize的完整高度,从而使其完全呈现。如果您对非常大的网页执行此操作,这将不会是内存滚刀,因此请谨慎使用。然后我们将滚动视图的contentSize设置为匹配,然后简单地动画设置内容偏移到结尾,无论你想要什么持续时间。
- (void)webViewDidFinishLoad:(UIWebView *)webView {
webView.frame = CGRectMake(webView.frame.origin.x, webView.frame.origin.y, webView.scrollView.contentSize.width, webView.scrollView.contentSize.height);
self.scrollView.contentSize = webView.scrollView.contentSize;
[UIView animateWithDuration:10 delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
[self.scrollView setContentOffset:CGPointMake(0, self.scrollView.contentSize.height - self.scrollView.frame.size.height)];
} completion:^(BOOL finished) {
}];
}