TelegraphKit

TelegraphKit 允许您以一种在 iOS 设备上看起来和感觉上都很原生的方式显示来自 telegra.ph 的网页内容。

TelegraphKit

“等等,telegra.ph 到底是什么?”

Telegraph 是一种“发布工具,允许您创建格式丰富的帖子,包含照片和各种嵌入内容”。它的主要优点是您可以在几秒钟内创建帖子,无需帐户和配置。然后,使用 TelegraphKit,您可以轻松地在您的应用中显示这些帖子。

维护者: @dreymonde

非常感谢 @danielpunkass 的文章 "支持暗黑模式:应用内网页内容",它对我们帮助巨大!

用法

  1. telegra.ph 上创建一篇帖子。无需创建帐户或配置任何内容。点击 "PUBLISH" 并复制链接。

  2. TelegraphKit 添加到您的项目中(参见下面的 "安装" 部分)

  3. 在您的项目中的某个地方

import TelegraphKit

let url = URL(string: "<your-telegraph-url>")!
let telegraphVC = TelegraphViewController(url: url)
let nvc = UINavigationController(rootViewController: telegraphVC)
self.present(nvc, animated: true)

指南

TelegraphKit 构建在 WKWebView 之上,专门为 telegra.ph 文章添加了一些额外的功能

默认 telegra.ph 外观 TelegraphKit 版本
default default

创建 TelegraphViewController

let telegraphVC = TelegraphViewController(url: URL(string: "https://telegra.ph/This-is-TelegraphKit-02-03")!)
// or
let telegraphVC = TelegraphViewController(postID: "This-is-TelegraphKit-02-03")

自定义外观

您可以使用 TelegraphViewController.Appearance 结构体来配置 TelegraphViewController 的外观

let telegraphVC = TelegraphViewController(postID: "<your-post-id>", appearance: .appleSystem)

TelegraphKit 为您提供了两个预设

TelegraphViewController.Appearance
--->.appleSystem // (default)
--->.telegraph

--->.defaultAppearance // (equals .appleSystem by default)

您可以通过直接创建它来微调外观

TelegraphViewController.Appearance(
    fontStyle: TelegraphViewController.Appearance.FontStyle, // .appleSystem or .telegraph
    hideAuthor: Bool,
    darkModeSupport: Bool, // true by default
    disableImageInteraction: Bool, // true by default
    disableSelection: Bool // false by default
)

要全局更改默认外观,您可以修改 TelegraphViewController.Appearance.defaultAppearance

// Somewhere in AppDelegate.swift or similar:
TelegraphViewController.Appearance.defaultAppearance = .telegraph

SwiftUI

从 0.1.0 版本开始,TelegraphKit 提供了一个用于 SwiftUI 的 TelegraphView

TelegraphView(
    postID: "<YOUR-POST-ID>",
    appearance: .appleSystem // optional
)

要自动在屏幕右上角添加 "Done" 按钮,请使用 .dismissable()

TelegraphView(
    postID: "<YOUR-POST-ID>",
    appearance: .appleSystem // optional
)
.dismissable() // will show "Done"
.dismissable(doneButtonTitle: "Cancel") // optional: customize done button title

完整使用示例

struct ExampleView: View {
    @State var showWebPage: Bool
    
    var body: some View {
        ZStack {
            Button("Open Telegraph") {
                showWebPage = true
            }
        }
        .sheet(isPresented: $showWebPage) {
            TelegraphView(
                postID: "<YOUR-POST-ID>",
                appearance: .appleSystem // optional
            )
            .dismissable()
        }
    }
}

安装

Swift Package Manager

  1. 点击 File → Swift Packages → Add Package Dependency。
  2. 输入 http://github.com/dreymonde/TelegraphKit.git