https://github.com/honzachalupa/swiftwebview
SwiftWebView is a Swift Package that provides an easy-to-use WebView implementation for SwiftUI. It wraps WKWebView functionality in a SwiftUI-friendly way, with built-in navigation controls and customization options.
https://github.com/honzachalupa/swiftwebview
library swift swiftui web webview
Last synced: 12 months ago
JSON representation
SwiftWebView is a Swift Package that provides an easy-to-use WebView implementation for SwiftUI. It wraps WKWebView functionality in a SwiftUI-friendly way, with built-in navigation controls and customization options.
- Host: GitHub
- URL: https://github.com/honzachalupa/swiftwebview
- Owner: honzachalupa
- Created: 2025-03-10T22:35:07.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-03-11T11:29:49.000Z (over 1 year ago)
- Last Synced: 2025-03-11T12:27:32.834Z (over 1 year ago)
- Topics: library, swift, swiftui, web, webview
- Language: Swift
- Homepage:
- Size: 7.81 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# SwiftWebView
A lightweight, customizable WebView component for SwiftUI applications.
## Overview
SwiftWebView is a Swift Package that provides an easy-to-use WebView implementation for SwiftUI. It wraps WKWebView functionality in a SwiftUI-friendly way, with built-in navigation controls and customization options.
## Requirements
- iOS 17.0+
- watchOS 10.0+
- tvOS 17.0+
- visionOS 1.0+
- macOS 14.0+
- Swift 6.0+
## Installation
### Swift Package Manager
1. In Xcode, select File > Add Packages...
2. Enter the repository URL: `https://github.com/honzachalupa/SwiftWebView.git`
3. Select the version or branch you want to use
4. Click "Add Package"
## Usage
### Basic Implementation
```swift
import SwiftUI
import SwiftWebView
struct ContentView: View {
@State private var urlString = "https://apple.com"
var body: some View {
SwiftWebView(
urlString: $urlString
)
}
}
```
### Control Variants
SwiftWebView offers three control variants:
- `.fixed`: Shows controls fixed at the top of the view
- `.closable`: Shows controls that can be collapsed/expanded with a button
- `.hidden`: Hides all controls (default)
```swift
// With fixed controls
SwiftWebView(
urlString: $urlString,
controls: .fixed
)
// With closable controls
SwiftWebView(
urlString: $urlString,
controls: .closable
)
// With hidden controls (default)
SwiftWebView(
urlString: $urlString,
controls: .hidden
)
```
### Custom Submit Button Label
You can customize the label of the submit button in the controls:
```swift
SwiftWebView(
urlString: $urlString,
controls: .fixed,
submitButtonLabel: "Search"
)
```
### Programmatic Navigation
You can programmatically navigate to URLs by changing the `urlString` binding:
```swift
struct ContentView: View {
@State private var urlString = "https://apple.com"
var body: some View {
VStack {
SwiftWebView(
urlString: $urlString,
controls: .fixed
)
Button("Go to Google") {
urlString = "https://google.com"
}
}
}
}
```
### Full-Screen Implementation
For a full-screen implementation, you can ignore safe areas:
```swift
SwiftWebView(
urlString: $urlString,
controls: .closable
)
.ignoresSafeArea(SafeAreaRegions.all, edges: [.bottom])
```
## Features
- Automatic handling of URL prefixes (adds https:// if missing)
- Built-in navigation controls (back, forward, reload)
- URL input field with submit functionality
- Synchronization of displayed URL with the address bar
- Support for collapsible controls to maximize screen space
## License
This library is available under the MIT license. See the LICENSE file for more info.