URLEmbeddedView 0.18.0

URLEmbeddedView 0.18.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布上次发布2019年9月
SPM支持 SPM

Taiki Suzuki 维护。



URLEmbeddedView

Platform Language Carthage compatible Version CocoaPods License

特点

  • 简单的接口用于获取 Open Graph 数据
  • 能够显示 Open Graph 数据
  • 自动缓存 Open Graph 数据
  • 自动缓存 Open Graph 图片
  • 可触摸处理
  • 可清除图片缓存
  • 可清除数据缓存
  • 支持 Swift3.2 (直到 0.11.x)
  • 支持 Swift4.x (直到 0.17.1)
  • 支持 Swift5 (自 0.18.0)
  • 从 0.11.1 开始支持 Carthage
  • 从 0.16.0 开始支持 tvOS
  • 对 OGData 缓存的定制实现

用法

要运行示例项目,首先从仓库克隆,然后从 Example 目录运行 carthage update

let embeddedView = URLEmbeddedView()
embeddedView.loadURL(urlString)

布局

  • 默认

  • 无图片

  • 无响应

自定义

embeddedView.textProvider[.Title].font = .boldSystemFontOfSize(18)
embeddedView.textProvider[.Title].fontColor = .lightGrayColor()
embeddedView.textProvider[.Title].numberOfLines = 2
//You can use ".Title", ".Description", ".Domain" and ".NoDataTitle"

数据及图像缓存

您可以使用 OGDataProvider 获取 Open Graph 数据。

OGDataProvider.shared.fetchOGData(urlString: String, completion: ((OpenGraph.Data, Error?) -> Void)? = nil) -> String?
OGDataProvider.shared.deleteOGData(urlString: String, completion: ((Error?) -> Void)? = nil)
OGDataProvider.shared.deleteOGData(_ ogData: OpenGraph.Data, completion: ((Error?) -> Void)? = nil)

您可以配置 OGData 下次更新的时间间隔。默认为10天。

OGDataProvider.shared.updateInterval = 10.days

您可以使用 OGImageProvider 获取 UIImage。

OGImageProvider.shared.loadImage(urlString: String, completion: ((UIImage?, Error?) -> Void)? = nil) -> NSURLSessionDataTask?
OGImageProvider.shared.clearMemoryCache()
OGImageProvider.shared.clearAllCache()

自定义数据缓存实现

默认缓存功能使用 Core Data。如果您想使用其他缓存功能,请使用 OGDataCacheManagerProtocol 实现缓存管理器。例如,URLEmbeddedView 有 OGDataNoCacheManager 该功能不使用缓存。如果您想使用该功能,可以像这样使用。

OGDataProvider.shared.cacheManager = OGDataNoCacheManager()

您可以实现自定义缓存功能并像这样使用它。

class MemoryCacheManager: OGDataCacheManagerProtocol {
    // implementation of required methods
}

OGDataProvider.shared.cacheManager = MemoryCacheManager()

OpenGraph.Data 属性

public let imageUrl: URL?
public let pageDescription: String?
public let pageTitle: String?
public let pageType: String?
public let siteName: String?
public let sourceUrl: URL?
public let url: URL?

OpenGraphDataDownloader

您只能这样使用 OGData 的下载功能 OpenGraphDataDownloader

let urlString = ...
OpenGraphDataDownloader.shared.fetchOGData(urlString: urlString) { result in
    switch result {
    case let .success(data, isExpired):
        // do something
    case let .failure(error, isExpired):
        // do something
    }
}

如果您将 OGDataProviderOGDataNoCacheManager 一起使用,过程几乎相同。

OGDataProvider.shared.cacheManager = OGDataNoCacheManager()
let urlString = ...
OGDataProvider.shared.fetchOGData(urlString: urlString) { ogData, error in
    // do something
}

安装

CocoaPods

URLEmbeddedView 可通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile 中

# Uncomment the next line to define a global platform for your project
# platform :ios, '8.0'

target 'Your Project Name' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for URLEmbeddedViewSample
  pod "URLEmbeddedView"
end

Carthage

如果您使用的是 Carthage,只需将 NoticeObserveKit 添加到您的 Cartfile

github "marty-suzuki/URLEmbeddedView"

Objective-C 使用示例

#import <URLEmbeddedView/URLEmbeddedView-Swift.h>

- (void)viewDidLoad {
    [super viewDidLoad];
    URLEmbeddedView *embeddedView = [[URLEmbeddedView alloc] init];
    [self.view addSubView:embeddedView];
    [embeddedView loadURL:@"https://github.com/" completion:nil];
}

- (void)setUpdateInterval {
  [OGDataProvider sharedInstance].updateInterval = [NSNumber days:10];
}

- (void)fetchOpenGraphData {
  [[OGDataProvider sharedInstance] fetchOGDataWithUrlString:self.textView.text
                                            completion:^(OpenGraphData *data, NSError *error) {
      NSLog(@"OpenGraphData = %@", data);
  }];
}

这里 有 Objective-C 的示例。

特别感谢

要求

  • Xcode 10.2 或更高版本
  • iOS 8.0 或更高版本
  • tvOS 10.0 或更高版本
  • UIKit
  • CoreData
  • CoreGraphics

其他

作者

铃木贵彦,[email protected]

许可协议

URLEmbeddedView 适用于 MIT 许可协议。有关更多信息,请参阅 LICENSE 文件。