OneSwift - iOS Tips Based On Swift

接上一篇文章,我们在设置中心通常会跳转到某一个网页承载页面,而通常我们会添加一些功能来提升他的体验。

1.添加菊花加载的效果

2.添加跳转到Safari的功能

3.添加复制链接的功能

4.添加分享网页的功能

首先,以WebViewController为例,我们要创建一个UIWebView;然后创建了三个功能按钮在左侧、一个关闭页面的按钮在右侧,并且为他们分别绑定;加载按钮的显示和隐藏直接通过代码实现。头部状态的代码如下:

class WebViewController: UIViewController,UIWebViewDelegate{let spinner = UIActivityIndicatorView()@IBOutlet weak var WebView: UIWebView!@IBAction func CloseAction(_ sender: Any) {self.dismiss(animated: true, completion: nil)}@IBAction func SafariAction(_ sender: Any) {self.toSafari()}@IBAction func CopyAction(_ sender: Any) {self.toCopy()}@IBAction func MoreAction(_ sender: Any) {self.toMore()}复制代码

一、添加菊花加载的效果

加载按钮需要在页面加载时立刻出现在正中央,并且开始旋转指导页面成功加载后隐藏。

先加在页面加载时立刻出现加载菊花,代码如下:

override func viewDidLoad() {super.viewDidLoad()//菊花按钮spinner.activityIndicatorViewStyle = .grayspinner.center = view.centerspinner.hidesWhenStopped = trueview.addSubview(spinner)spinner.startAnimating()self.loadWeb()// Do any additional setup after loading the view.
}
复制代码

之后webViewDidFinishLoad检测了页面加载的状态,当加载完成后立刻隐藏并且停止菊花旋转,代码如下:

func webViewDidFinishLoad(_ webView: UIWebView) {print("web load finish")self.spinner.stopAnimating()}
复制代码

二、添加跳转到Safari的功能

初始化时已经绑定了打开浏览器的函数toSafari,打开浏览器的操作就很简单了:

@objc func toSafari(){print("to safari")if let url = NSURL(string:self.url)  {UIApplication.shared.open(url as URL, options: [:], completionHandler: nil)}}
复制代码

三、添加复制链接的功能

复制网页信息的方法toCopy,我们可以将标题和链接同时复制,代码如下:

@objc func toCopy(){print("to copy")//就这两句话就实现了let paste = UIPasteboard.generallet str = self.urlTitle+":"+self.urlprint(str)paste.string = strlet alertController = UIAlertController(title: NSLocalizedString("Copy Success!",comment: "Copy Success!"),message: nil,preferredStyle: .alert)//显示提示框self.present(alertController, animated: true, completion: nil)//两秒钟后自动消失DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 2) {self.presentedViewController?.dismiss(animated: false, completion: nil)}}
复制代码

四、添加分享网页的功能

分享网页的方法toMore,采用了类似于分享应用的方式,这是这里的内容我们改为网页的信息,比如网页的标题、链接、头图,代码如下:

@objc func toMore(){print("to more")let shareVC:UIActivityViewController = UIActivityViewController(activityItems: [self.urlTitle,self.urlImage,self.url], applicationActivities: nil)self.present(shareVC, animated: true, completion: {print("more success")})}
复制代码

一个特性三个功能是不是很简单?当然你需要再添加一个关闭按钮。

GitHub:OneSwift - iOS Tips Based On Swift

微博:xDEHANG

为网页承载页面添加更多功能相关推荐

  1. element-plus+vite+guiplan注册页面添加验证码功能

    element-plus+vite+guiplan注册页面添加验证码功能 element-plus+vite+guiplan注册页面添加验证码功能 介绍 步骤 总结 element-plus+vite ...

  2. 文章页点赞php代码,wordpress文章页面添加点赞功能

    wordpress的文章点赞方法很多,而且大多数都是依赖插件,插件多的话,网站打开速度较慢.所以分享出来一款非常简洁的纯代码实现wp主题点赞的功能.并且运用cookies有效的解决了重复点赞bug. ...

  3. html弄多个按钮_如何为HTML / CSS页面添加更多按钮?

    I want to make a single page website and it will have huge content. Suppose it has 1000 photos on it ...

  4. 用 JAVA 开发游戏连连看(之四)添加更多的功能

    之四)添加更多的功能 计分功能 大体上我们的程序已经可以跑了起来,可惜,就这么玩玩也太没有意思了,总得有个计分的吧.虽然我们不知道别人是怎么计分的,可是,程序是我们自己动手写的,我的地盘我做主,看看我 ...

  5. java连连看的按钮如何加入_用 JAVA 开发游戏连连看(之四)添加更多的功能

    之四)添加更多的功能 计分功能 大体上我们的程序已经可以跑了起来,可惜,就这么玩玩也太没有意思了,总得有个计分的吧.虽然我们不知道别人是怎么计分的,可是,程序是我们自己动手写的,我的地盘我做主,看看我 ...

  6. vue 滑动加载列表 php,通过原生vue添加滚动加载更多功能

    这篇文章主要介绍了通过原生vue添加滚动加载更多功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 vue中添加滚动加载更多,因为是单页面所以需要在 ...

  7. js页面中实现加载更多功能

    js页面中实现加载更多功能 分页-如何实现加载更多功能,目前的在很多网站上使用的加载更多功能中,使用最多的是iscroll.js实现的上拉加载更多.下拉刷新功能.但是iscroll.js本身并没有集成 ...

  8. RecycleView与TabLayout联动展示更多功能列表页面的实现

    一.前言 对于更多功能页面,使用RecycleView与TabLayout联动方式实现是比较常见的,先上效果图(请大佬们忽略gif的水印) 单独使用TabLayout和RecycleView都是比较容 ...

  9. 前端日历添加记事功能_通过添加实验室功能从Google日历中获取更多信息

    前端日历添加记事功能 Recently we took a look at how you can take Gmail further by enabling some of the extra f ...

最新文章

  1. 知道PHP期末答案,PHP期末练习(参考答案).doc
  2. php xp不支持,据说PHP5.5发布 不再支持XP和2003
  3. 在visual studio中使用git版本系统(zz)
  4. Qt Creator连接QNX设备
  5. C++bucket sort桶排序的实现算法(附完整源码)
  6. ASP.NET MVC 使用 FluentScheduler 定时器计划任务
  7. mysql 导入.sql文件_MySQL导入.sql文件及常用命令
  8. 8招教您做好B2B行业网站页面设计
  9. 舞台灯恒流芯片 无频闪无噪音 多路共阳 调光深度0.1% 方案分享
  10. golang实现四种排序(快速,冒泡,插入,选择)
  11. 【渝粤教育】广东开放大学 社会学概论 形成性考核 (50)
  12. 深入Linux文件系统
  13. influxDB的安装和简单使用
  14. 动易html编辑器,解决动易后台编辑器(混合模式,编织模式不可用变灰
  15. php eclipse 插件安装,phpeclipse插件下载-phpeclipse插件官方版 v1.2.3 官方最新版 - 安下载...
  16. SSB基准测试-ClickHouse
  17. mysql order by = 用法说明(order by id=1 desc/asc)
  18. 长沙理工计算机竞赛黑马,2018年五大学科成绩出炉,长沙杀出一匹黑马!
  19. 英文连写字体怎么练_重点名师精心整理“衡水体”英文书写视频,现在开始练,期末拿高分!...
  20. PanGu STM32MP开发板更新固件

热门文章

  1. javascript的原始数据类型
  2. 《液晶显示器和液晶电视维修核心教程》——第2章 电子元器件的基础知识2.1 电阻类...
  3. 如何用matlab测a相相电流,基于MATLAB的瞬时无功理论谐波检测算法仿真研究
  4. Vectorcast 2021 sp4 linux
  5. 瑞波加入超级账本区块链联盟
  6. 3词法分析 - 有穷自动机
  7. 简单易学的机器学习算法——Metropolis-Hastings算法
  8. tomcat默认端口号(三个tomcat端口号)
  9. 天边一朵云-书画双绝
  10. pythonplt制作饼状图_4.5Python数据处理篇之Matplotlib系列(五)---plt.pie()饼状图