WebContentView 1.1

WebContentView 1.1

测试已测试
语言语言 Obj-CObjective C
许可证 zlib
发布最近发布2014 年 12 月

未声明的 维护。



  • 作者:
  • Nick Lockwood

目的

WebContentView 为使用 UIWebView 在 iPhone 应用中渲染丰富 HTML 内容提供了一个简单的原生接口。它不是设计为在在线或离线内容上工作的嵌入式网络浏览器,它不加载 URL - 更像是一个 "丰富版" 的 UITextView,其中内容可以用 HTML 而不是纯文本来设置。

安装

要在您的项目中使用 WebContentView,只需将类文件拖拽到您的项目当中。它没有依赖。

属性

每个 WebContentView 实例有以下属性

@property (nonatomic, retain, readonly) UIScrollView *scrollView;

这是用于滚动内容的内部 UIScrollView。使用原生 ScrollView 而不是滚动 UIWebView 的原因是因为这更像是一个正常的原生控件,并让您对滚动行为有更精确的控制。如果您想为这个 ScrollView 注册代理,那么代理不是由 WebContentView 使用的。

@property (nonatomic, retain, readonly) UIWebView *webView;

这是 WebContentView 内部使用的 UIWebView。请注意,WebContentView 已注册为 UIWebView 的代理,因此覆盖它将破坏一些标准 WebContentView 行为。

@property (nonatomic, retain) IBOutlet UIView *headerView;

一个可选的 UIView,用于作为网页内容的一个头部。这个视图将自动放置在 ScrollView 内的网页内容之上,并且可以与网页内容一起上下滚动。

@property (nonatomic, retain) IBOutlet UIView *footerView;

一个可选的 UIView,用于作为网页内容的一个尾部。这个视图将自动放置在 ScrollView 内的网页内容之下,并且可以与网页内容一起上下滚动。如果网页内容不够高以填满视图,则尾部将锁定在 WebContentView 的底部,在网页内容下方留下间隙。

@property (nonatomic, copy) NSString *content;

要显示的内容。这应该提供为 HTML 格式。这可以是一个 HTML 片段,而不是一个完整的 HTML 文档(即不需要 <head><body> 标签)。内容可以包含内嵌样式,但使用样式实例属性或默认样式类属性设置样式更容易、更有效。内容中的任何图片引用或其他 URL 都将是相对于应用程序包的。

@property (nonatomic, assign) BOOL scrollEnabled;

这个属性用于启用/禁用在 WebContentView 的内部 UIScrollView 上的滚动。

@property (nonatomic, assign) CGFloat minimumContentHeight;

这是内容的大小最小高度,包括头部和尾部的高度。如果minimumContentHeight大于头部、网页内容和学生脚的总高度,则尾部将与指定高度的底部对齐。如果minimumContentHeight小于或等于总高度,则尾部将直接放置在网页内容下方。默认的minimumContentHeight为零。将minimumContentHeight设置为WebContentView的高度,以复制WebContentView 1.0.4和更早版本的behaviour。

@property (nonatomic, assign) id<WebContentViewDelegate> delegate;

这是WebContentView的代理。

@property (nonatomic, readonly, getter = isLoading) BOOL loading;

此属性可用来检测内容是否已加载完成。

方法

WebContentView类拥有以下共享方法

+ (NSString *)defaultStyles;

此方法返回所有WebContentView实例使用的共享默认样式表。

+ (NSString *)sharedStyles;

此方法返回所有WebContentView实例使用的共享自定义样式表。

+ (void)setSharedStyles:(NSString *)styles;

此方法设置所有WebContentView实例使用的共享样式表。如果设置此值,现有实例将用新样式刷新。

+ (void)preloadContent:(NSString *)content;

WebContentView有时需要几分之一秒来渲染,这可能会导致它们显示时内容闪烁。您可以使用此方法预加载内容,以便它能够立即渲染。预加载实际上在后台创建了一个WebContentView实例,因此它可能会消耗大量内存。默认情况下,预加载视图的数量限制为10(如果您选择,可以编辑.m文件中的此常量)。如果发生内存警告,则预加载视图将被清除,因此在WebContentView显示之前,预加载是最后的机会。

每个WebContentView实例具有以下方法

- (void)flashScrollIndicators;

如果内容大于视图边界,则此方法将闪烁滚动条。

- (void)sizeContentToFit;

此方法将自动调整WebContentView可滚动内容区域的大小以匹配HTML内容的大小,并重新定位头部和尾部视图。您通常不需要手动调用此方法,但如果内容由于CSS悬停效果或不会触发自动调整大小的JavaScript事件而调整大小,则可能需要调用。

代理方法

- (void)webContentViewDidFinishLoad:(WebContentView *)webContentView;

当WebContentView完成加载/显示内容时调用此方法。注意,如果内容已预加载,则此方法可能永远不会被调用,所以您需要执行一些操作,一旦内容加载,请在设置内容后检查loading属性。

- (BOOL)webContentView:(WebContentView *)webContentView shouldOpenURL:(NSURL *)URL;

每当用户在WebContentView中点击链接时调用此方法。默认情况下,所有WebContentView链接将在Safari中打开,但您可以覆盖此行为,在自己的应用内自行处理它们,通过返回NO。