在UIWindow上加类似于“回到顶部”的按钮
在公司上个版本的开发中遇到了一个UI布局的小问题:
某个页面需要增加一个分享按钮,但是该页面是二级页面,导航栏右边也已经放置了2个button。
起初和老大谈论这个问题的时候想到的方法是导航栏右边加三个button得了~但是一回想,这貌似太丑了!虽然两人都不是处女座,不过这个方法算是pass掉了
当天下班前想起浏览网页的时候经常会在滑动的时候右下方出现一个“回到顶部”的按钮,似乎在iOS客户端也可以实现这一类似的功能。
原理:获取到keywindow,然后在keywindow上面添加一个bgView,在bgView上面加上一个UIButton(之所以这样包装一层是为了美观一点,想将shareBtn弄成圆型)
- (void)createShareBtn
{
UIButton *shareBtn = [UIButton buttonWithType:UIButtonTypeCustom];
shareBtn.frame = CGRectMake(0, 0, 40, 40);
[shareBtn setImage:[UIImage imageNamed:@"wright"] forState:UIControlStateNormal];
[shareBtn addTarget:self action:@selector(shareBtnAction) forControlEvents:UIControlEventTouchUpInside];
bgView = [[UIView alloc] initWithFrame:CGRectMake(kScreen_width-50, kScreen_height/2-64, 40, 40)];
bgView.backgroundColor = [UIColor whiteColor];
bgView.alpha = .9;
bgView.layer.cornerRadius = 20;
bgView.layer.masksToBounds = YES;
[bgView addSubview:shareBtn];
// 获取keyWindow
UIWindow *keywindow = [UIApplication sharedApplication].keyWindow;
[keywindow addSubview:bgView];
}
- (void)shareBtnAction
{
//创建分享视图
[self shareView];
}
有一点需要注意:即如果我们这样设置了,那么需要进行下一步操作(在视图pop的时候,移除shareBtn),否则shareBtn会一直显示在keywindow上面
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
// 这里bgView是全局的
[bgView removeFromSuperview];
}
当然还有一点
细心的同学会发现我在bgView设置了alpha值为0.9,这样依然会遮挡住下面的视图,影响用户浏览
为此我做了如下设置:
1、值得说一下的是,整个二级页面的层级结构是
UIViewController-->webView
2、让我们来看看webView里有一些什么我们可以用到的:
@interface UIWebView : UIView <NSCoding, UIScrollViewDelegate>
@property (nullable, nonatomic, assign) id <UIWebViewDelegate> delegate;
@property (nonatomic, readonly, strong) UIScrollView *scrollView NS_AVAILABLE_IOS(5_0);
对于UIScrollViewDelegate大家应该不陌生了
#pragma mark - UIScrollViewDelegate
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
bgView.alpha = .45;
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
bgView.alpha = .9;
}
当然一定不要忘了签约:webView.scrollView.delegate = self;
对于- (void)createShareBtn方法的调用随大家需求所定
1、如果需要长期显示,可以在
- (void)viewDidLoad方法里调用(此处还有一个小技巧:createShareBtn在createWebView之后在UIWindow上加类似于“回到顶部”的按钮的更多相关文章
- 简单地做一下“回到顶部”按钮,用jQuery实现其隐藏和显示
1.首先,我们要准备HTML代码: <div id="return-top"> <a href="#top">返回顶部</a> ...
- 一款回到顶部的 jQuery 插件,支持 Div 中的滚动条回到顶部
前言 今天在网上搜索“回到顶部”的 jQuery 插件,网上有很多,但是大部分都不支持让 Div 中的滚动条回到顶部.于是乎,不放弃,自己参考 Github 上的一个 jQuery 插件,经过自己的修 ...
- jq回到顶部效果分析
在浏览网页时,超出屏幕高度就会出现提上点击回到顶部的图标,点击即可回到页面顶部. 用到的知识点如下: 1.首先控制图标的显示和隐藏,先要获取浏览器的高度. var wHeight = $(window ...
- jQuery滚动条回到顶部或指定位置
jQuery滚动条回到顶部或指定位置 在很多网站,为了增强用户体验,我们会看到回到顶部的按钮,不用手动拖拽滚动条就能回到顶部,非常方便.下面就介绍用jquery实现的滚动到顶部的代码 $(functi ...
- 兼容IE,chrome 等所有浏览器 回到顶部代码
今天在博客园看到一片帖子回到顶部代码,索性就看了下,但是发现在非IE浏览器下可以运行,在IE浏览器下却运行不了. 故将其代码搬弄过来做了些许修改后,完美支持了IE下的运行. 主要实现功能代码文件: & ...
- vue中回到顶部
1. 回到顶部,使用 scrollIntoView 方法: Element.scrollIntoView方法滚动当前元素,进入浏览器的可见区域 该方法可以接受一个布尔值作为参数.如果为true,表示元 ...
- jQuery写toTop(回到顶部)效果
在通常的网站开发中,页面有时候会很长,尤其是一些电商网站,为了提高用户的体验效果,我们通常会增加一个回到顶部的按钮,这个按钮我们同城会使用fixed定位,将其定位在当前可视区域某一固定位置.这个效果用 ...
- JavaScript实现网页回到顶部效果
在浏览网页时,当我们浏览到网页底部,想要立刻回到网页顶部时,这时候一般网页会提供一个回到顶部的按钮来提升用户体验,以下代码实现了该功能 HTML代码: <p id="back-top& ...
- 从微信小程序到鸿蒙js开发【13】——list加载更多&回到顶部
鸿蒙入门指南,小白速来!从萌新到高手,怎样快速掌握鸿蒙开发?[课程入口] 目录: 1.list加载更多 2.list回到顶部 3.<从微信小程序到鸿蒙js开发>系列文章合集 1.list加 ...
随机推荐
- win10_64位系统下安装ALM12.01(QC),笔者只在Win10平台上试过,大家也可以在win7的平台上试一下,一个道理!(Alpha)
HP的ALM是一个非常全面的缺陷管理系统,但安装学习的非常的麻烦,以前学的是ALM,好久没用带今天想学习一下发现安装的非常的困难 !发现网上对ALM的系统安装的介绍非常少,也非常琐碎!今天就借着自己学 ...
- MVC框架以及实例
MVC框架 MVC(model,view,controller),一种将业务逻辑.数据.界面分离的方法组织代码的框架.在改进界面及用户交互的同时,不需要重写业务逻辑.MVC将传统的输入.处理和输出分离 ...
- 如何在 Azure 虚拟机里配置条带化
什么是条带化(striping) 条带 (strip) 是把连续的数据分割成相同大小的数据块,把每段数据分别写入到阵列中的不同磁盘上的方法.简单的说,条带是一种将多个磁盘驱动器合并为一个卷的方法. 许 ...
- jquery遍历之children()与find()的区别
hildren(selector) 方法是返回匹配元素集合中每个元素的所有子元素(仅儿子辈).参数可选,添加参数表示通过选择器进行过滤,对元素进行筛选. .find(selector)方法是返回匹配元 ...
- 8086 CPU 寄存器简介
转载:http://www.cnblogs.com/BoyXiao/archive/2010/11/20/1882716.html 引子 打算写几篇稍近底层或者说是基础的博文,浅要介绍或者说是回顾一些 ...
- centos 安装php扩展的两种方法
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 查看PHP版本: php -v 1 1 查看指定PHP版本: /usr/local/php/bin/php -v 1 1 ...
- Android App性能优化(一)之布局优化
当创建复杂布局的时候,我们会在xml 文件中添加大量的ViewGroup和View.伴随着每次迭代,View树的层次越来越深,界面加载速度越来越慢,消耗的内存也越来越多.当您的程序出现加载时短暂黑屏或 ...
- 企业办公领域: Windows + Office的组合在未来能抵挡住 Google Apps的冲击么
从个人角度讲,我基本上不怎么喜欢微软的产品,即便是其无处不见的Windows. Windows 8用了几个月的后,实在无法忍受其某些SB的设计,还是换回Win7.另外自从用上了MacBook 以后, ...
- java内部类之成员内部类之匿名内部类
匿名内部类特点:1.匿名内部类是没有名称的内部类,没办法引用它们.必须在创建时,作为new语句的一部分来声明并创建它们的实例.2.匿名内部类必须继承一个类(抽象的.非抽象的都可以)或者实现一个接口.如 ...
- Hive安装报错
安装好hive后在bin路径下输入hive报错: [ERROR] Terminal initialization failed; falling back to unsupported 原因是hado ...