在UIWebView 上面添加一个头视图 让它能随webView 滚动

UIWebView是iOS sdk中一个最常用的控件。它是一个内置的浏览器控件,我们可以用它来浏览网页、打开文档等等.

UIWebView可以用来向用户展示一些网页信息,在我们进行开发的时候,通常会想在这个Controller上面添加一个headerView用来展示标题或者图片 ,那么我们此时就会遇到一个问题,就是怎么在一个webView上面添加头视图.

我在网上搜过这个问题,很多人说直接在webView的scrollView上添加一个View.这样确实可以实现在webView上添加头视图,但是这样的话会导致一个问题就是,这个heardView会遮挡住webView上显示的内容,也就是说,headerView其实是直接加在webView上面的,它并不是webView的一部分.

此时我们有着这样的需求,就是我们需要让这个头视图显示在加载出来的网页的上面,能随着webView进行滚动.这样该怎么办呢?

我们通过官方的API可以知道其实在UIWebView中是有一个UIScrollView的属性的.

图片1

实际上,webView之所以能够显示这么多的内容,而且可以滚动就是因为这个scrollView的属性.那么我们就可以从这个地方下手来实现我们想要的效果.


比如说,此时我们想在加在的webView上面添加一张图片作为标题.图片的高度我们设置为240.

首先,我们在视图上添加完webView之后,我们将webView的scrollView的的contentInset设置一下,contentInset可以在四周增加滚动范围.

// 添加额外的滚动附近区域的内容
    _webView.scrollView.contentInset = UIEdgeInsetsMake(240, 0, 0, 0);

注意:UIEdgeInsetsMake的值依次设置为:上,左,下,右

设置完成之后,scrollView的滚动范围就成增加了240.这样我们就可以在这个页面的frame的y轴的-240的地方添加随意视图了.比如在这里我们添加一个imageView.

// 在webView上添加一个imgView 在 imgView上添加一个label
    UIImageView *view = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"test.jpg"]];
    imgView.frame = CGRectMake(0, -240, _webView.frame.size.width, 240);
      [_webView.scrollView addSubview:imgView];

我们解析一个本地的HTML数据,用webView来展示

NSString *pathFile = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"html"];
NSString *htmlString = [NSString stringWithContentsOfFile:pathFile encoding:NSUTF8StringEncoding error:nil];
[_webView loadHTMLString:htmlString baseURL:nil];

ok,这样就是现在在UIWebView上添加一个头视图,并且让它可以随着scrollView滚动.

如下图:

图片2

文/CoderQiao(简书作者)
原文链接:http://www.jianshu.com/p/59960ac2b3a1
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

时间: 2024-08-27 13:28:50

在UIWebView 上面添加一个头视图 让它能随webView 滚动的相关文章

可以添加多个头视图、尾视图的RecycleView适配器

import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import java.util.ArrayList; /** * 可以添加多个透视图.尾视图的适配器 * Created by WangGang on 2015/5/27. */ public abstract class AdvancedAdapter2 extends Recycler

Xamarin iOS开发实战上册-----2.2 添加和定制视图

2.2  添加和定制视图 本节将主要讲解视图的两种添加方式:一种是使用Interface Builder:一种是使用代码:以及定制视图等内容. 2.2.1  使用Interface Builder添加视图 使用Interface Builder添加视图是一个相当简单的工作.以下的示例将为开发者讲解该如何使用Interface Builder添加视图. [示例2-1]以下将使用Interface Builder添加一个视图,具体步骤如下: (1)创建一个Single View Applicatio

Xamarin iOS教程之添加和定制视图

Xamarin iOS教程之添加和定制视图 Xamarin iOS用户界面——视图 在iPhone或者iPad中,用户看到的摸到的都是视图.视图是用户界面的重要组成元素.例如,想要让用户实现文本输入时,需要使用输入文本的视图:想要让用户显示图像时,需要使用显示图像的视图.本章将为开发者详细讲解如何构建视图. Xamarin iOS视图 在应用程序开发中,最常见的视图如表2-1所示. 表2-1  常用视图   Xamarin iOS添加和定制视图 本节将主要讲解视图的两种添加方式:一种是使用Int

添加糢糊视图

1.创建一个Xcode工程 2.打开Main.storyboard,添一个UIImageView视图,并为UIImageView插入图片 3.打开ViewController.swift,在viewDidLoad方法下添加以下代码 override func viewDidLoad() { super.viewDidLoad() //糢糊效果类 var blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Light) //糢糊效果视图类 var

【Asp.Net Core】二、添加控制器和视图

控制器Controller 在添加控制器前,我们先看下它为我们自动生成的一些Controller,我们看下AccountController.cs 来看下登录验证方法Login !!!跟以前的写法好像很多地方不一样?async这个应该是异步 干什么用的呢 ? Task<IActionResult> 是什么? var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.Remem

iOS开发中在UIWebView中添加Gif动态图

开发是一件很有趣的事,偶尔在程序中添加一些小东西,会给你的应用增色不少.比如,当你的某些功能暂时还不准备上线时,可以先一个放展示Gif动态图的UIWebView上去,既可以告诉用户APP以后会有的功能,也会使你的APP手动可爱,打动一大波妹子. #import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UIWebView *myWalletWebView; @

.net EF中从数据添加表或视图时无法添加的问题

.net 使用EF模式进行开发,添加实体时不能够正常添加 错误描述: .net中在EF文件中添加数据库中已有的表或视图时不能正常添加,在添加时没有任何的错误提示,但是表或视图就一直拉不过来,,保存也没有相应的表或视图. 解决方案: 出现这种情况的时候要看看表或视图中是否有主键或者不能为空的字段,如果没有类似字段或主键,添加一个这样的字段在试试,一般来说添加一个这样的字段应该就能解决. 我所碰到的问题添加了一个主键就解决.添加一个主键就可以正常的把表或视图添加EF模型中去了.如果配到类似的问题可以

NX二次开发-UFUN添加工程图投影视图UF_DRAW_add_orthographic_view

1 NX9+VS2012 2 3 #include <uf.h> 4 #include <uf_draw.h> 5 #include <uf_obj.h> 6 #include <uf_part.h> 7 8 UF_initialize(); 9 10 //新建工程图(A4图纸) 11 char* DrawingName = "Sheet1";//设置图纸名字 12 UF_DRAW_info_t DrawingInfo;//设置图纸大小.

百度地图添加大头针和视图

首先初始化一个要展示的泡泡视图 paopaoView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 80)]; paopaoView.layer.cornerRadius = 10; paopaoView.layer.borderColor = [UIColor lightGrayColor].CGColor; paopaoView.layer.borderWidth = 2; UILabel *label = [[UILabel a