Retour au classement

A view controller class for iOS that allows users to view web pages directly within an app.

iosobjective-cuiwebviewwebcocoapodsuiviewcontroller
Croissance des étoiles
Étoiles
1.5k
Forks
205
Croissance hebdomadaire
Issues
4
5001k
mars 2023avr. 2024juin 2025juil. 2026
README

With the announcement of iOS 12, UIWebView is now officially deprecated. As of iOS 13, Apple have started rejecting apps that implement UIWebView, rendering this library completely defunct.

This library will be left up for developers who may still need to support iOS 7, but no new features will be added, nor will support be provided. Stay tuned. Plans for a WKWebView version are in the making. :D


TOWebViewController

An Inline Web Browser for iOS Apps

TOWebViewController

CI Status Version Carthage compatible GitHub license Platform Beerpay PayPal Twitch

TOWebViewController is an open-source UIViewController subclass designed to let apps quickly present web page content to its users, without needing to kick them over to Safari. TOWebViewController has been designed from the ground up to be easily integrated into existing projects, to take advantage of the latest features of iOS, and to optionally be backwards compatible with (significantly) earlier versions of iOS.

Features

  • Powered by UIWebView, backwards compatible down to iOS 5.
  • Full navigation buttons set, including back, forward, refresh and an optional share/action button.
  • Detects whether being pushed modally, or via a navigation controller and adjusts the UI accordingly.
  • A page load progress bar (using ninjinkun's amazing algorithm).
  • Plays a smooth, elegant rotation animation if/when the user rotates the device.
  • Icons are procedurally generated by CoreGraphics (ie, no unnecessary image assets at all!).
  • Compatible with iOS 8 size classes, including split-screen on iPad Air 2, iPad mini 4 and iPad Pro.
  • 1Password automatic password input extension support.

Example

TOWebViewController is smart enough to be able to tell when it's being presented as a modal popup, and when it's being pushed onto a UINavigationController and to change its button layout accordingly.

Presenting as a Modal Dialog

When presenting as a modal popup, it is still necessary to create a parent UINavigationController in order for the buttons to display properly:

TOWebViewController *webViewController = [[TOWebViewController alloc] initWithURL:[NSURL URLWithString:@"http://www.apple.com/"]];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:webViewController];
[self presentViewController:navigationController animated:YES completion:nil];

Pushing onto a UINavigationController

TOWebViewController *webViewController = [[TOWebViewController alloc] initWithURL:[NSURL URLWithString:@"http://www.apple.com/"]];
[self.navigationController pushViewController:webViewController animated:YES];

System Requirements

iOS 5.0 or above

Installation

As a CocoaPods Dependency

Add the following to your Podfile:

pod 'TOWebViewController'

As a Carthage Dependency

Add the following to your Cartfile:

github "https://github.com/TimOliver/TOWebViewController"

Manual Installation

Download this project from GitHub, move the subfolder named 'TOWebViewController' over to your project folder, and drag it into your Xcode project.

After that, you'll need to link the following system frameworks to your project:

  • QuartzCore.framework
  • CoreGraphics.framework
  • MessageUI.framework
  • Twitter.framework

Why no WKWebView adoption?

This library was originally built around iOS 5, with the explicit goal of supporting as many versions of iOS as possible. While there were some experiments in trying to drop WKWebView into this controller as an option for devices running iOS 8 and above, its API is so inherantly different to UIWebView that it would be very challenging to properly support switching between the two. As a result, the best option would be to write a new web view controller from scratch, designed around WKWebView.

TOWebViewController will not be adopting WKWebView at any point in the future. If you would like an alternative view controller that does, please give DZNWebViewController a try!

What about SFSafariViewController?

Starting from iOS 9, Apple now provides a built-in web view controller of similar functionality named SFSafariViewController. If your app is only targeting iOS 9, and it completely fills your requirements, then it is absolutely recommended that you adopt SFSafariViewController instead of TOWebViewController.

That being said, if you are still targeting lower iOS versions, or require more customisability than SFSafariViewController provides, then TOWebViewController can still serve as a viable alternative.

Credits

TOWebViewController was originally created by Tim Oliver as a component for iComics, a comic reader app for iOS.

Thanks also goes to TOWebViewController's growing list of contributors!

iPad Pro and iPhone X device mockups by Pixeden. iPod touch mockup by Tim Oliver.

License

TOWebViewController is licensed under the MIT License. For more information, please see the LICENSE file. analytics

Dépôts similaires
flutter/flutter

Flutter makes it easy and fast to build beautiful apps for mobile and beyond

DartBSD 3-Clause "New" or "Revised" Licensemobileandroid
flutter.dev
177.9k30.7k
react/react-native

A framework for building native applications using React

C++MIT Licenseandroidapp-framework
reactnative.dev
126.2k25.2k
facebook/react-native

A framework for building native applications using React

C++MIT Licenseandroidapp-framework
reactnative.dev
120.9k24.5k
rustdesk/rustdesk

An open-source remote desktop application designed for self-hosting, as an alternative to TeamViewer.

Rustcrates.ioGNU Affero General Public License v3.0remote-controlremote-desktop
rustdesk.com
118.6k18.1k
justjavac/free-programming-books-zh_CN

:books: 免费的计算机编程类中文书籍,欢迎投稿

GNU General Public License v3.0pythonjavascript
weibo.com/justjavac
117.7k28.2k
Solido/awesome-flutter

An awesome list that curates the best Flutter libraries, tools, tutorials, articles and more.

Dartflutterawesome-list
60.7k6.9k
FiloSottile/mkcert

A simple zero-config tool to make locally trusted development certificates with any names you'd like.

GoGo ModulesBSD 3-Clause "New" or "Revised" Licensehttpstls
mkcert.dev
59.4k3.1k
appwrite/appwrite

Appwrite® - complete cloud infrastructure for your web, mobile and AI apps. Including Auth, Databases, Storage, Functions, Messaging, Hosting, Realtime and more

TypeScriptnpmBSD 3-Clause "New" or "Revised" Licenseappwritedocker
appwrite.io
56.6k5.6k
google/material-design-icons

Material Design icons by Google (Material Symbols)

Apache License 2.0materialmaterial-design
google.github.io/material-design-icons/
53.6k9.7k
vsouza/awesome-ios

A curated list of awesome iOS ecosystem, including Objective-C and Swift Projects

SwiftMIT Licenseawesomeswift-library
awesomeios.dev
52.8k7k
ionic-team/ionic-framework

A powerful cross-platform UI toolkit for building native-quality iOS, Android, and Progressive Web Apps with HTML, CSS, and JavaScript.

TypeScriptnpmMIT Licenseionicmobile
ionicframework.com
52.6k13.3k
dkhamsing/open-source-ios-apps

:iphone: Collaborative List of Open-Source iOS Apps

Creative Commons Zero v1.0 Universaliosswift
51.3k6k