Skip to content

jakhongirrajabaliev/markdown-webview

 
 

Repository files navigation

Installation

Swift Package Manager

https://github.com/jakhongirrajabaliev/markdown-webview

Display Markdown Content

import SwiftUI
import MarkdownWebView

struct ContentView: View {
    @State private var markdownContent = "# Hello World"
    @State private var fontSize: CGFloat = 15
    @Environment(\.sizeCategory) var sizeCategory
    
    var body: some View {
        VStack {
            ScrollView {
                Slider(value: $fontSize, in: 10...30, step: 1) {
                    Text("Font Size")
                }
                Text("Current size: \(Int(fontSize))")
                MarkdownWebView(markdownContent, fontSize: effectiveFontSize)
                    .padding()
            }
        }
    }
    
    private var effectiveFontSize: CGFloat {
        return fontSize * scalingFactor(for: sizeCategory)
    }
    
    private func scalingFactor(for category: ContentSizeCategory) -> CGFloat {
        switch category {
        case .extraSmall: return 0.8
        case .small: return 0.9
        case .medium: return 1.0
        case .large: return 1.1
        case .extraLarge: return 1.2
        case .extraExtraLarge: return 1.3
        case .extraExtraExtraLarge: return 1.4
        case .accessibilityMedium: return 1.6
        case .accessibilityLarge: return 1.8
        case .accessibilityExtraLarge: return 2.0
        case .accessibilityExtraExtraLarge: return 2.2
        case .accessibilityExtraExtraExtraLarge: return 2.4
        @unknown default: return 1.0
        }
    }
}

About

A performant SwiftUI Markdown view.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • CSS 50.1%
  • Swift 30.8%
  • JavaScript 12.3%
  • HTML 6.8%