前面我们已经讲解完了 UINavigationController 的一些常用属性以及方法,现在让我们来看看一个关于网络的 UIWebView.

1.UIWebView的常用属性

// 1.设置 UIWebView 的代理对象
var delegate: UIWebViewDelegate?

// 2.获取 UIWebView 的 UIScrollView 属性
var scrollView: UIScrollView { get }

// 3.获取 UIWebView 的网络请求
var request: NSURLRequest? { get }

// 4.获取 UIWebView 是否在接收数据的时候可以退后一步
var canGoBack: Bool { get }

// 5.获取 UIWebView 是否在接收数据的时候可以前进一步
var canGoForward: Bool { get }

// 6.获取 UIWebView 是否接受完数据
var loading: Bool { get }

// 7.设置 UIWebView 接收的数据是否可以通过手势来调整页面内容大小
var scalesPagetoFit: Bool

// 8.设置 UIWebView 接收的数据是什么类型
var dataDetectorTypes: UIDataDetectorTypes

// 9.设置 UIWebView 内是否可以回放媒体
var allowsInlinemediaplayback: Bool

// 10.设置 UIWebView 中的 HTML5 视频是否自动播放(默认是True)
var mediaplaybackRequiresUserAction: Bool

// 11.设置 UIWebView 是否可以使用 Air 播放(默认是True)
var mediaplaybackAllowsAirPlay: Bool

// 12.设置 UIWebView 是否使用同步加载(默认是False)
var suppressesIncrementalRendering: Bool

// 13.设置 UIWebView 在点击视图或者元素时是否显示键盘(默认是True)
var keyboarddisplayRequiresUserAction: Bool

// 14.设置 UIWebView 的分页模式
var paginationMode: UIWebPaginationMode

// 15.设置 UIWebView 的分页打破模式
var paginationBreakingMode: UIWebPaginationBreakingMode

// 16.设置 UIWebView 的分页长度
var pageLength: CGFloat

// 17.设置 UIWebView 之间的页面宽度
var gapBetweenPages: CGFloat

// 18.获取 UIWebView 的页面数量
var pageCount: Int { get }

常用类型

// 1.获取 UIWebView 的数据类型
struct UIDataDetectorTypes : RawOptionSetType {
    init(_ rawValue: UInt)
    init(rawValue: UInt)

    static var PhoneNumber: UIDataDetectorTypes { get }
    static var Link: UIDataDetectorTypes { get }
    static var Address: UIDataDetectorTypes { get }
    static var CalendarEvent: UIDataDetectorTypes { get }
    static var None: UIDataDetectorTypes { get }
    static var All: UIDataDetectorTypes { get }
}

// 2.设置 UIWebView 的 Navigation 类型
enum UIWebViewNavigationType : Int {
    case LinkClicked
    case FormSubmitted
    case BackForward
    case Reload
    case FormResubmitted
    case Other
}


// 3.设置 UIWebView 的分页样式
enum UIWebPaginationMode : Int {
    case Unpaginated
    case LeftToRight
    case TopToBottom
    case BottomToTop
    case RightToLeft
}

// 4.设置 UIWebView 打破分页样式的样式
enum UIWebPaginationBreakingMode : Int {
    case Page
    case Column
}

2.UIWebView的代理方法

// 1.该方法是用来设置是否在 UIWebView 加载之前发送一个请求
    optional func webView(webView: UIWebView,shouldStartLoadWithRequest request: NSURLRequest,navigationType: UIWebViewNavigationType) -> Bool

// 2.该方法是在 UIWebView 在开发加载时调用
    optional func webViewDidStartLoad(webView: UIWebView)

// 3.该方法是在 UIWebView 加载完之后才调用
    optional func webViewDidFinishLoad(webView: UIWebView)

// 4.该方法是在 UIWebView 请求失败的时候调用
    optional func webView(webView: UIWebView,didFailLoadWithError error: NSError)

3.代码示范

首先我们要使用storyBoard布局界面

关联控件

遵守代理协议

class ViewController: UIViewController,UIWebViewDelegate {
}

自定义UIWebVIew

func myWebView() {

        // 1.获取 UIWebView 的 UIScrollView 属性
        let webScroll = webView.scrollView
        println("webScroll = \(webScroll)")

        // 2.获取 UIWebView 的 request 属性
        let webRequest = webView.request
        println("webRequest = \(webRequest)")

        // 3.获取 UIWebView 是否在接收数据的时候可以退后一步
        let webCanBack = webView.canGoBack
        println("webCanBack = \(webCanBack)")

        // 4.获取 UIWebView 是否在接收数据的时候可以前进一步
        let webCanGo = webView.canGoForward
        println("webCanGo = \(webCanGo)")

        // 5.获取 UIWebVIew 是否接受完数据
        let webLoading = webView.loading
        println("webLoading = \(webLoading)")

        // 6.设置 UIWebView 接收的数据是否可以通过手势来调整页面内容大小
        webView.scalesPagetoFit = true

        // 7.设置 UIWebView 接收到得数据是什么类型的
        webView.dataDetectorTypes = UIDataDetectorTypes.All

        // 8.设置 UIWebView 内是否可以回放媒体
        webView.allowsInlinemediaplayback = true

        // 9.设置 UIWebView 中的 HTML5 视频是否自动播放
        webView.mediaplaybackRequiresUserAction = true

        // 10.设置 UIWebView 是否可以使用 Air 播放
        webView.mediaplaybackAllowsAirPlay = true

        // 11.设置 UIWebView 是否使用同步加载(默认是False)
        webView.suppressesIncrementalRendering = false

        // 12.设置 UIWebView 在点击视图或者元素时是否显示键盘(默认是True)
        webView.keyboarddisplayRequiresUserAction = true

        // 13.设置 UIWebView 的分页模式
        webView.paginationMode = UIWebPaginationMode.RightToLeft

        // 14.设置 UIWebView 的分页打破模式
        webView.paginationBreakingMode = UIWebPaginationBreakingMode.Column

        // 15.设置 UIWebView 的分页长度
        webView.pageLength = 400

        // 16.设置 UIWebView 每个分页之间的宽度
        webView.gapBetweenPages = 100

        // 17.获取 UIWebView 的分页数量
        let webViewPageCount = webView.pageCount
        println(webViewPageCount)

        // 18.设置 UIWebView 的代理对象
        webView.delegate = self

        // 19.发送网络请求
        var url:NSURL = NSURL(string:"http://www.baidu.com")!
        var request:NSURLRequest = NSURLRequest(URL:url)
        webView.loadRequest(request)
    }

实现代理方法

// 1.该方法是用来设置是否在 UIWebView 加载之前发送一个请求
    func webView(webView: UIWebView,shouldStartLoadWithRequest request: NSURLRequest,navigationType: UIWebViewNavigationType) -> Bool {
        return true
    }

    // 2.该方法是在 UIWebView 在开发加载时调用
    func webViewDidStartLoad(webView: UIWebView) {
        println("开始加载")
    }

    // 3.该方法是在 UIWebView 加载完之后才调用
    func webViewDidFinishLoad(webView: UIWebView) {
        println("加载完成")
    }

    // 4.该方法是在 UIWebView 请求失败的时候调用
    func webView(webView: UIWebView,didFailLoadWithError error: NSError) {
        println("加载失败")
    }

在 ViewDidLoad 方法中实现

override func viewDidLoad() {
        super.viewDidLoad()
        self.myWebView()
    }

PS: UIWebView 继承与 UIView,并且遵守了 uiscrollviewdelegate 协议,所以它可以使用里面的方法和属性.

好了,这次我们就讲到这里,下次我们继续~~

UIKit框架-高级控件Swift版本: 10.UIWebView方法/属性详解的更多相关文章

  1. 详解如何通过H5(浏览器/WebView/其他)唤起本地app

    这篇文章主要介绍了详解如何通过H5(浏览器/WebView/其他)唤起本地app的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. HTML5页面无缝闪开的问题及解决方案

    这篇文章主要介绍了HTML5页面无缝闪开方案,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. ios – 在WKWebView中获取链接URL

    我想在WKWebView中获取tapped链接的url.链接采用自定义格式,可触发应用中的某些操作.例如HTTP://我的网站/帮助#深层链接对讲.我这样使用KVO:这在第一次点击链接时效果很好.但是,如果我连续两次点击相同的链接,它将不报告链接点击.是否有解决方法来解决这个问题,以便我可以检测每个点击并获取链接?任何关于这个的指针都会很棒!解决方法像这样更改addobserver在observeValue函数中,您可以获得两个值

  4. ios – 永远不会调用shouldStartLoadWithRequest

    我已经研究和研究,但仍然不明白为什么从未调用过StartLoadWithRequest.我的页面加载正常,并调用了一些UIWebview委托协议方法.请从以下代码中找到相关的摘要:在我的.m中合成我的webview(在头文件中定义):我成功加载了我的webview:把我的代表设置为自己我的所有协议方法都被称为EXCEPTshouldStartLoadWithRequest提前致谢.解决方法尝试在V

  5. ios – UIWebView不适合设备屏幕

    我有一个网页视图,我想填写iDevice的全屏.我把它放在视图中心设置为中心并与容器边缘齐平.然而,当我加载应用程序时,视图比它运行的模拟iPhone大.我做了一些搜索,一些建议自动布局,这已经应该是视图的中心.我发现的另一件事是通过代码设置大小.我甚至将应用程序从通用应用程序更改为iPhone,对布局没有影响.完整来源:解决方法设置缩放以适合视图边界.试试这个:希望这可以帮助..:)

  6. ios – 如何在Swift中手动为UIWebView设置Cookie

    我需要在swift中为webview设置一个cookie.我找到了一个解决方案,但它是针对objective-c的.如何在Swift中做到这一点?

  7. iOS – 防止UIAppearance设置更改UIWebView输入附件视图

    我的应用程序中有一个UIWebView,问题是我有一个UIAppearance来修改分段控件的外观,因此它修改了UIWebView文本字段的输入附件视图中的分段控件,我希望它看起来不错,或者不试图修改它.这就是它目前的样子:解决方法我只是通过使用[UIAppearanceappearanceWhenContainedIn:]而不是[UIAppearance外观]来解决这个问题.通过向选择器发送包含

  8. ios – UIScrollView内容不允许用户交互

    我有一个启用了分页的UIScrollView,如下所示:在UIScrollView中,我添加了几个UIWebViews,并将其启用的交互设置为是这样的.它打破了UIScrollView上的分页和所有触摸.如果我将用户交互设置为NO,则页面有效,但我无法在UIWebView中突出显示文本.我试着像下面那样对UIScrollView进行子类化,但是会出现同样的情况.任何的想法?

  9. ios – UIScrollView中的UIControll未接收到触摸事件

    我在我的项目中使用SevenSwitch.我需要将它添加到UIScrollView中,但是当我将它添加到滚动视图中时,控件似乎无法接收触摸事件.我尝试了子类滚动视图并覆盖下面的代码:还补充说:但仍然无法接收触摸事件.如何阻止scrollview阻止UIControl接收触摸?

  10. ios – UIScrollView的平滑自定义分页

    我在UIScrollView中有两个(可能更多)视图,并希望使用分页.当我尝试使用UIScrollView的默认分页选项时出现问题,因为视图具有不同的宽度,无法正确分页.所以我已经实现了一个有效的自定义分页代码.但是,当滚动较慢时,它不会按预期运行.(它回到没有动画的原始位置.)以下是我目前通过uiscrollviewdelegate进行自定义分页的方法我想要的是:是)我有的:解决方法尝试下面的自

随机推荐

  1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  2. swift UISlider,UIStepper

    我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

  3. preferredFontForTextStyle字体设置之更改

    即:

  4. Swift没有异常处理,遇到功能性错误怎么办?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 字典实战和UIKit初探

    ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

  6. swift语言IOS8开发战记21 Core Data2

    上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

  7. swift语言IOS8开发战记22 Core Data3

    上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

  8. swift实战小程序1天气预报

    在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

  9. 【iOS学习01】swift ? and !  的学习

    如果不初始化就会报错。

  10. swift语言IOS8开发战记23 Core Data4

    接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

返回
顶部