Swift基础之实现一个镂空图片的小Demo
前两天看了别人的文章,涉及到了镂空的展示,所以我在这里把实现的内容写成Swift语言的小Demo,供大家欣赏
首先,需要创建导航视图,然后创建两种展示方式的按钮
let vc = ViewController();
let nav = UINavigationController.init(rootViewController: vc);
window?.rootViewController = nav;
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.title = "两种镂空Demo";
self.view.backgroundColor = UIColor.whiteColor();
//创建两个按钮
let btn1 = UIButton.init(frame: CGRectMake(20, 100,screenWidth()-40, 50));
btn1.setTitle("滑块部分显示与背景不一样的图", forState: .Normal);
btn1.setTitleColor(UIColor.blueColor(), forState: .Normal);
btn1.addTarget(self, action:#selector(btn1Click), forControlEvents: .TouchUpInside);
self.view.addSubview(btn1);
let btn2 = UIButton.init(frame: CGRectMake(20, 180,screenWidth()-40, 50));
btn2.setTitle("滑块部分显示与背景不一样的图", forState: .Normal);
btn2.setTitleColor(UIColor.blueColor(), forState: .Normal);
btn2.addTarget(self, action:#selector(btn2Click), forControlEvents: .TouchUpInside);
self.view.addSubview(btn2);
}
//按钮1方法
func btn1Click(btn:UIButton) {
let showVC = ShowViewController();
showVC.typeInt = 1;
self.navigationController?.pushViewController(showVC, animated: true);
}
//按钮2方法
func btn2Click(btn:UIButton) {
let showVC = ShowViewController();
showVC.typeInt = 2;
self.navigationController?.pushViewController(showVC, animated: true);
}
//相当于#define
//返回屏幕宽
func screenWidth() -> CGFloat {
return UIScreen.mainScreen().bounds.size.width;
}
//返回屏幕高
func screenHeight() -> CGFloat {
return UIScreen.mainScreen().bounds.size.height;
}
我分成了两种展示方式
一种是:滑块部分显示与背景不一样的图
//背景图片
let backImage = UIImageView.init(frame: CGRectMake(0, 64, screenWidth(), screenHeight()-64));
backImage.image = UIImage.init(named: "background.jpg");
self.view.addSubview(backImage);
//背景视图
bgView = UIView.init(frame: self.view.bounds);
bgView.backgroundColor = UIColor.clearColor();
self.view.addSubview(bgView);
//移动视图
clipView = UIView.init(frame: CGRectMake(0, 64, 180, 180));
clipView.layer.cornerRadius = 90;
clipView.layer.masksToBounds = true;
//设置裁剪
clipView.clipsToBounds = true;
//设置交互
clipView.userInteractionEnabled = true;
bgView.addSubview(clipView);
//显示图片
showImgView = UIImageView.init(frame: CGRectMake(0, 0, screenWidth(), screenHeight()-64));
showImgView.image = UIImage.init(named: "star.jpeg");
clipView.addSubview(showImgView);
//添加拖动手势
let panGresture = UIPanGestureRecognizer.init(target: self, action: #selector(panGrestureView));
clipView.addGestureRecognizer(panGresture);
另一种是:滑块部分显示与背景不一样的图,背景是空白
bgView = UIView.init(frame: self.view.bounds);
bgView.backgroundColor = UIColor.lightGrayColor();
self.view.addSubview(bgView);
//移动视图
clipView = UIView.init(frame: CGRectMake(0, 64, screenWidth()-40, 120));
//设置裁剪
clipView.clipsToBounds = true;
//设置交互
clipView.userInteractionEnabled = true;
bgView.addSubview(clipView);
//显示图片
showImgView = UIImageView.init(frame: CGRectMake(0, 0, screenWidth(), screenHeight()-64));
showImgView.image = UIImage.init(named: "star.jpeg");
clipView.addSubview(showImgView);
//添加拖动手势
let panGresture = UIPanGestureRecognizer.init(target: self, action: #selector(panGrestureView));
clipView.addGestureRecognizer(panGresture);
展示结果:
源码下载:http://download.csdn.net/detail/hbblzjy/9622850
Swift基础之实现一个镂空图片的小Demo的更多相关文章
- 【云开发】10分钟零基础学会做一个快递查询微信小程序,快速掌握微信小程序开发技能(轮播图、API请求)
大家好,我叫小秃僧 这次分享的是10分钟零基础学会做一个快递查询微信小程序,快速掌握开发微信小程序技能. 这篇文章偏基础,特别适合还没有开发过微信小程序的童鞋,一些概念和逻辑我会讲细一点,尽可能用图说 ...
- Swift基础之两指拉动图片变大变小
我们在使用APP的时候,有时会发现有些图片可以通过两指进行放大.缩小,今天就实现这样的一种效果,比较简单,不喜勿喷.... var imageVi:UIImageView! = nil var ...
- 一个iOS图片选择器的DEMO(实现图片添加,宫格排列,图片长按删除,以及图片替换等功能)
在开发中,经常用到选择多张图片进行上传或作其他处理等等,以下DEMO满足了此功能中的大部分功能,可直接使用到项目中. 主要功能如下: 1,图片九宫格排列(可自动设置) 2,图片长按抖动(仿苹果软件删除 ...
- 一个上传图片,预览图片的小demo
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- iOS:自己写的一个星级评价的小Demo
重新整理了下自己星级评价的Demo,可以展示星级评价,可以动态修改星级. github的地址:https://github.com/hunterCold/HYBStarEvaluationView a ...
- 一个基于node 的小demo
首先我们新建一个文件夹 demo-test-node-1 目录目录如下 -- blog_recents.js --template.html --titles.jspn 首先我们新建一个 templ ...
- 一个JNI的helloworld小demo
最近想学习一下jni,在网上看了一些demo,自己也操作了一遍,首先我将我自己学习的demo网站贴出来:https://blog.csdn.net/lwcloud/article/details/78 ...
- gulp安装+一个超简单入门小demo
gulp安装參考.gulp安装參考2. 一.NPM npm是node.js的包管理工具.主要功能是管理.更新.搜索.公布node的包. Gulp是通过npm安装的. 所以首先,须要安装node.js. ...
- SpringMVC-拦截器做一个登录认证的小Demo
拦截器 拦截器的定义 处理器拦截器类似于servlet开发中的filter,用于对处理器进行预处理和后处理. 定义拦截器,实现HandlerInterceptor这个接口 接口的实现需要导入包impo ...
随机推荐
- 杜教筛进阶+洲阁筛讲解+SPOJ divcnt3
Part 1:杜教筛进阶在了解了杜教筛基本应用,如$\sum_{i=1}^n\varphi(i)$的求法后,我们看一些杜教筛较难的应用.求$\sum_{i=1}^n\varphi(i)*i$考虑把它与 ...
- 深入以太坊智能合约 ABI
开发 DApp 时要调用在区块链上的以太坊智能合约,就需要智能合约的 ABI.本文希望更多了解 ABI,如为什么需要 ABI?如何解读 Ethereum 的智能合约 ABI?以及如何取得合约的 ABI ...
- Go 完整实现版本比较 VersionCompare 函数
[转] http://www.syyong.com/Go/Go-implementation-version-comparison-VersionCompare-function.html Versi ...
- Jackson工具
Jackson Jackson包含一个core JAR,和两个依赖core JAR的JAR: jackson-core-2.2.3.jar(核心jar包,下载地址) jackson-annotatio ...
- Unity使用C++作为游戏逻辑脚本的研究
文章申明:本文来自JacksonDunstan的博客系列文章内容摘取和翻译,版权归其所有,附上原文的链接,大家可以有空阅读原文:C++ Scripting( in Unity) 一.C#和C++的通信 ...
- 安装redis 执行make命令时报错解决方法
一.未安装GCC 解决方法:执行yum install gcc-c++命令安装GCC,完成后再次执行make命令 yum install gcc-c++ Linux无法连接网络 http://www. ...
- 解决问题redis问题:ERR Client sent AUTH, but no password is set
是的,这又是一个坑爹的问题. 明明在redis.conf中设置了密码,而且redis还启动了,为什么说没有密码呢? 大家都知道linux下启动redis有很多种方法, 其中有 ./redis-serv ...
- 进程间通信——XSI IPC之消息队列
进程间通信XSI IPC有3种:消息队列.共享内存.信号量.它们之间有很多相似之处,但也有各自的特殊的地方.消息队列作为其中比较简单的一种,它会有些什么东西呢,来一起探讨探讨.. 消息队列结构 消息队 ...
- 关于bedtools merge 功能中sort 命令的解释
Bedtools 是一个很好的用来处理区间的工具,很多时候用这个底层语言编写的小工具比自己写的脚本运行快很多,但是这个工具中的某些功能对输入文件有一定的要求,比如说里面的一个merge函数,这是里面的 ...
- JSON 封装函数
var eventUtil = { addHandler:function(element,type,handler) { //添加句柄 if(element.addEventListener) { ...