最近更新的一批app,好多都采用了圆盘转动的效果,比如:百度音乐、当当,大概效果如下:

看看这个是怎么实现的吧。

一、视图元素布局

首先需要明确,这些视图元素是分布在一个圆周上的,通过滑动位置,以圆周中心旋转相应角度,那么该怎么布局呢?

如果把白色圆盘和小人视图分开,就需要代码控制,倾斜角度,然后add到父视图上,倾斜好办,就是图像的旋转,但是,倾斜后的图片的frame就不好控制了。

这时应该想到什么呢?没错,设计妹妹,我订好角度,让设计妹妹把圆盘和小人图一起切图给我,如下:

这样就不用自己去调整单张图片的frame了,将该图片的center.x设置为设备宽度的一半,通过调整center.y,来控制图像的展示,代码如下:

  1. _circleBg = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 1355, 1292)];
  2. _circleBg.center = CGPointMake(self.view.frame.size.width/2.0, self.view.frame.size.height+100);
  3. _circleBg.image = [UIImage imageNamed:@"circle.png"];
  4. [self.view addSubview:_circleBg];

二、滑动起来

首先可能会想到,在添加好的图片上面去添加滑动手势,然后改变_circleBg.transform来旋转角度,这样做能旋转图片,但是需要维护很多变量来控制整个过程,比如:滑动

多少距离,翻转到下一页;滑动一点点距离,松手,还原回当前页等等。

怎么控制好呢?

刚才提到的这些顾虑可以通过scrollview完美解决,想想是不是。

那么,我们要做的就是把图片旋转的角度和scrollview的滑动偏移量绑定在一起,通过scrollview来带动图片的旋转,想想都美好啊!

代码如下:

添加一个scrollview

  1. _scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
  2. _scrollView.backgroundColor = [UIColor lightGrayColor];
  3. _scrollView.contentSize = CGSizeMake(self.view.frame.size.width*3, self.view.frame.size.height);
  4. _scrollView.delegate = self;
  5. _scrollView.pagingEnabled = YES;
  6. [self.view addSubview:_scrollView];

代理方法

  1. - (void)scrollViewDidScroll:(UIScrollView *)scrollView
  2. {
  3. float offSetX = scrollView.contentOffset.x;
  4. _circleBg.transform = CGAffineTransformMakeRotation(-offSetX*(M_PI*4/9)/kScreenWidth);
  5. }

是不是很简单啊!

iOS圆盘转动引导图的简单实现的更多相关文章

  1. iOS 添加功能引导图

    iOS 添加功能引导图 首次安装app之后,打开app首页,有一张功能引导图,其实最简单的一种做法是,直接在这个首页上加一个蒙层图片. 在蒙层上用气泡显示文字注明功能介绍,这个蒙层图片,让你们的UI设 ...

  2. 引导图滤波(Guided Image Filtering)原理以及OpenCV实现

    引导图是一种自适应权重滤波器,能够在平滑图像的同时起到保持边界的作用,具体公式推导请查阅原文献<Guided Image Filtering>.这里只说一下自适应权重原理.C++实现灰度图 ...

  3. jQuery 3D圆盘旋转焦点图 支持鼠标滚轮

    之前我们分享过很多炫酷实用的jQuery焦点图插件了,今天介绍的这款jQuery焦点图非常特别,所有图片围成一个圆圈,组成一个立体视觉的圆盘,并且可以旋转选择圆盘中的图片.另外,这款jQuery 3D ...

  4. iOS学习笔记20-地图(二)MapKit框架

    一.地图开发介绍 从iOS6.0开始地图数据不再由谷歌驱动,而是改用自家地图,当然在国内它的数据是由高德地图提供的. 在iOS中进行地图开发主要有三种方式: 利用MapKit框架进行地图开发,利用这种 ...

  5. iOS 图片轮播图(自动滚动)

    iOS 图片轮播图(自动滚动) #import "DDViewController.h" #define DDImageCount 5 @interface DDViewContr ...

  6. iOS开发UI篇—xib的简单使用

    iOS开发UI篇—xib的简单使用 一.简单介绍 xib和storyboard的比较,一个轻量级一个重量级. 共同点: 都用来描述软件界面 都用Interface Builder工具来编辑 不同点: ...

  7. iOS 中使用.9图

    背景 .9图来源于Android.为了设计出一套图,兼容Android和iOS,使用.9图的方式来对图片进行拉伸以适应不同的屏幕.在iOS中没有.9图的概念,只能先了解Android的.9图再进行模拟 ...

  8. IOS 股票K线图、分时图

    IOS 股票K线图.分时图,网上开源项目很少,质量也是参差不齐:偶尔搜索到看似有希望的文章,点进去,还是个标题党:深受毒害.经过一段时间的探索,终于在开源基础上完成了自己的股票K线图.分时图: 先放出 ...

  9. iOS界面设计切图小结

    iOS界面设计切图小结 APR 12TH, 2013 1.基本尺寸 (1)界面 实际设计时按: iPhone4.4s:640px*960px iPhone5: 640px*1136px iPad:15 ...

随机推荐

  1. javascript小练习-Firefox和低版本chrome下必须采用document方法获取到元素。

    pxpx;background-color: aqua;display: none;} </style></head><body><input type=&q ...

  2. ue中替换行

    把替换的字符替换为^p 如:123,12,3,1, 在UE力把“,”替换未“^p”,就会替换为 1231231

  3. C++から広がり

    泛型编程(Generic Programming)最初提出时的动机很简单直接:发明一种语言机制,能够帮助实现一个通用的标准容器库.所谓通用的标准容器库,就是要能够做到,比如用一个List类存放所有可能 ...

  4. querySelector $() getElementBy区别

    参考 http://stackoverflow.com/questions/14377590/queryselector-and-queryselectorall-vs-getelementsbycl ...

  5. SQL Server 通配符为目标字符的查找

    create table t(x int identity(1,1) primary key,v nvarchar(32));go insert into t(v) values('this is % ...

  6. FastCGI | FastCGI -

    FastCGI | FastCGI - FastCGI About FastCGI FastCGI is simple because it is actually CGI with only a f ...

  7. C# ADO基础(使用using操作数据库)

    1.使用using 来对数据库进行操作,using是资源释放的一种缩写,用于实现了实现了IDisposable接口(释放对象资源的接口是IDisposable) private void button ...

  8. [置顶] jsp中c标签的使用

    jsp中c标签的使用 核心标签库 它是JSTL中的核心库,为日常任务提供通用支持,如显示和设置变量.重复使用一组项目.测试条件和其他操作(如导入和重定向Web内容).Core标签按功能可分为4种类型: ...

  9. python 命令行参数,以及文件操作

    #demo.py #!/usr/bin/python import sys print sys.argv #python demo.py 11 22 33 44 55 ['demo.py', '11' ...

  10. gdb篇

    转自:http://www.cnblogs.com/ypchenry/p/3668572.html 1.gdb的原理 熟悉linux的同学面试官会问你用过gdb么?那好用过,知道gdb是怎么工作的么? ...