FISWebViewPreloader 1.0

FISWebViewPreloader 1.0

测试测试版
Lang语言 Obj-CObjective C
许可证 MIT
Released最后发布2014年12月

未声明维护。



  • Basar Akyelli和James Lin

UIWebView 预加载器

FISWebViewPreloader是一个 Cocoapod,它可以帮助在后台加载 UIWebView 对象,以便在没有延迟的情况下展示。


安装 FISWebViewPreloader

您可以使用CocoaPodsFISWebViewPreloader 安装到项目中。

pod 'FISWebViewPreloader', :git => 'https://github.com/jameslin101/FISWebViewPreloader.git'

使用 FISWebViewPreloader 创建预加载的 UIWebView 对象

使用FISWebViewPreloader 非常简单。我们建议创建一个私有变量来使用 FISWebViewPreloader

@property (strong,nonatomic) FISWebViewPreloader *preloader;

....

self.preloader = [FISWebViewPreloader new];

每次您需要创建一个预加载的 UIWebView 对象时,您都可以将其 URL 字符串添加到 FISWebViewPreloader 的字典中。

[self.preloader setURLString:@"http://www.google.com" forKey:@"Google"];

如果您需要将网页缩放到适应某个框架,您可以传递您的框架的宽度和长度值

[self.preloader setURLString:@"http://www.apple.com"
                          forKey:@"Apple"
                      withCGRect:CGRectMake(0,0,self.view.frame.size.width, self.view.frame.size.height)];

在计划中使用容量约束

如果您担心 FISWebViewPreloader 会占用太多内存,您可以定义要创建和预加载的 UIWebView 的数量。

self.preloader = [[FISWebViewPreloader alloc] initWithCapacity:5 scheduleType:FIFO];

这将确保如果添加了超过 5 个 UIWebView,则根据您指定的 ScheduleType(后进先出或先进先出)删除较老的 UIWebView。如果您尝试访问已经出队的 UIWebView,则将动态重新创建请求的 UIWebView

每次您访问 UIWebView 对象时,它将自动被放置在优先队列的头部。


访问您的预加载 UIWebView 对象

访问预加载的 UIWebView 对象有两种方式。您可以在创建时检索您的 UIWebView 对象

UIWebView *googleWebView = [self.preloader setURLString:@"http://www.google.com" forKey:@"Google"];

或者,您可以使用 FISWebViewPreloaderwebViewForKey: 方法

UIWebView *googleWebView = [self.preloader webViewForKey:@"Google"];

您可以使用以下方法来访问给定 UIWebView 的键

NSString *myKey = [self.preloader keyForWebView:googleWebView];
//myKey will be @"Google"

UIWebViewDelegate 协议

如果您的 View Controller 依赖于 UIWebViewDelegate 协议,那么您可以使用与以下类似的模式来访问代理方法

-(void)createWebViews
{
    UIWebView *googleWebView = [self.preloader setURLString:@"http://www.google.com" forKey:@"Google"];
    googleWebView.delegate = self;
}

#pragma mark UIWebViewDelegate methods

- (void)webViewDidStartLoad:(UIWebView *)webView {
    NSLog(@"Started loading %@", [self.preloader keyForWebView:webView]);
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    NSLog(@"Finished loading %@", [self.preloader keyForWebView:webView]);
}

移除预加载的 UIWebView 对象

您可以使用 removeWebViewForKey: 方法来停止销毁您不再需要的任何 UIWebView 对象

[self.preloader removeWebViewForKey:@"Google"];

也可以调用 reset: 方法,销毁预加载程序和优先队列中的所有键/对象对

[self.preloader reset];