iOS圆盘转动引导图的简单实现
最近更新的一批app,好多都采用了圆盘转动的效果,比如:百度音乐、当当,大概效果如下:
看看这个是怎么实现的吧。
一、视图元素布局
首先需要明确,这些视图元素是分布在一个圆周上的,通过滑动位置,以圆周中心旋转相应角度,那么该怎么布局呢?
如果把白色圆盘和小人视图分开,就需要代码控制,倾斜角度,然后add到父视图上,倾斜好办,就是图像的旋转,但是,倾斜后的图片的frame就不好控制了。
这时应该想到什么呢?没错,设计妹妹,我订好角度,让设计妹妹把圆盘和小人图一起切图给我,如下:
这样就不用自己去调整单张图片的frame了,将该图片的center.x设置为设备宽度的一半,通过调整center.y,来控制图像的展示,代码如下:
- _circleBg = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 1355, 1292)];
- _circleBg.center = CGPointMake(self.view.frame.size.width/2.0, self.view.frame.size.height+100);
- _circleBg.image = [UIImage imageNamed:@"circle.png"];
- [self.view addSubview:_circleBg];
二、滑动起来
首先可能会想到,在添加好的图片上面去添加滑动手势,然后改变_circleBg.transform来旋转角度,这样做能旋转图片,但是需要维护很多变量来控制整个过程,比如:滑动
多少距离,翻转到下一页;滑动一点点距离,松手,还原回当前页等等。
怎么控制好呢?
刚才提到的这些顾虑可以通过scrollview完美解决,想想是不是。
那么,我们要做的就是把图片旋转的角度和scrollview的滑动偏移量绑定在一起,通过scrollview来带动图片的旋转,想想都美好啊!
代码如下:
添加一个scrollview
- _scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
- _scrollView.backgroundColor = [UIColor lightGrayColor];
- _scrollView.contentSize = CGSizeMake(self.view.frame.size.width*3, self.view.frame.size.height);
- _scrollView.delegate = self;
- _scrollView.pagingEnabled = YES;
- [self.view addSubview:_scrollView];
代理方法
- - (void)scrollViewDidScroll:(UIScrollView *)scrollView
- {
- float offSetX = scrollView.contentOffset.x;
- _circleBg.transform = CGAffineTransformMakeRotation(-offSetX*(M_PI*4/9)/kScreenWidth);
- }
是不是很简单啊!
iOS圆盘转动引导图的简单实现的更多相关文章
- iOS 添加功能引导图
iOS 添加功能引导图 首次安装app之后,打开app首页,有一张功能引导图,其实最简单的一种做法是,直接在这个首页上加一个蒙层图片. 在蒙层上用气泡显示文字注明功能介绍,这个蒙层图片,让你们的UI设 ...
- 引导图滤波(Guided Image Filtering)原理以及OpenCV实现
引导图是一种自适应权重滤波器,能够在平滑图像的同时起到保持边界的作用,具体公式推导请查阅原文献<Guided Image Filtering>.这里只说一下自适应权重原理.C++实现灰度图 ...
- jQuery 3D圆盘旋转焦点图 支持鼠标滚轮
之前我们分享过很多炫酷实用的jQuery焦点图插件了,今天介绍的这款jQuery焦点图非常特别,所有图片围成一个圆圈,组成一个立体视觉的圆盘,并且可以旋转选择圆盘中的图片.另外,这款jQuery 3D ...
- iOS学习笔记20-地图(二)MapKit框架
一.地图开发介绍 从iOS6.0开始地图数据不再由谷歌驱动,而是改用自家地图,当然在国内它的数据是由高德地图提供的. 在iOS中进行地图开发主要有三种方式: 利用MapKit框架进行地图开发,利用这种 ...
- iOS 图片轮播图(自动滚动)
iOS 图片轮播图(自动滚动) #import "DDViewController.h" #define DDImageCount 5 @interface DDViewContr ...
- iOS开发UI篇—xib的简单使用
iOS开发UI篇—xib的简单使用 一.简单介绍 xib和storyboard的比较,一个轻量级一个重量级. 共同点: 都用来描述软件界面 都用Interface Builder工具来编辑 不同点: ...
- iOS 中使用.9图
背景 .9图来源于Android.为了设计出一套图,兼容Android和iOS,使用.9图的方式来对图片进行拉伸以适应不同的屏幕.在iOS中没有.9图的概念,只能先了解Android的.9图再进行模拟 ...
- IOS 股票K线图、分时图
IOS 股票K线图.分时图,网上开源项目很少,质量也是参差不齐:偶尔搜索到看似有希望的文章,点进去,还是个标题党:深受毒害.经过一段时间的探索,终于在开源基础上完成了自己的股票K线图.分时图: 先放出 ...
- iOS界面设计切图小结
iOS界面设计切图小结 APR 12TH, 2013 1.基本尺寸 (1)界面 实际设计时按: iPhone4.4s:640px*960px iPhone5: 640px*1136px iPad:15 ...
随机推荐
- symfony2-创建提交表单生成数据过程
一.”一对多“关系 表shop(一)
- Javascript实现DIV的隐藏和出现
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- python基础学习笔记5--对象方法、属性和迭代器
对象方法.属性和迭代器 1.构造方法 1)构造方法和一般方法的不同点:当一个对象被创建后,会立即调用构造方法. 2)在Python中创建一个构造方法很容易,只要把init方法的名字从简单的init修改 ...
- 5_Navigation Bar
5 // // ViewController.swift // Navigation Bar // // Created by ZC on 16/1/9. // Copyright © 2016年 Z ...
- mysql远程登录权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION; FLUSH PRIVILEGES;
- Oracle触发器(trigger):view,schema,database
视图trigger, instead of 我们知道如果一个view只是由一个table构成,那在view上做啥操作没太多限制.如果view是由多个table组成那在view上做啥unpdate,in ...
- java 学习 ——计算器小程序
简易计算器小程序代码: package jisuanqi; //声明须要插入的包 import java.awt.*; import java.lang.Object; import java.lan ...
- POJ3771+Prim
最小生成树的应用 数据量小. /* Prim */ #include<stdio.h> #include<string.h> #include<stdlib.h> ...
- IOS学习之蓝牙4.0 BLE
IOS学习也一段时间了,该上点干货了.前段时间研究了一下IOS蓝牙通讯相关的东西,把研究的一个成果给大家分享一下. 一 项目背景 简单介绍一下做的东西,设备是一个金融刷卡器,通过蓝牙与iphone手机 ...
- VS C++工程类成员初始化检测脚本
最近项目中出现由类成员未初始化而进行读写而造成的问题,于是想将项目中所有的为初始化的地方找出来,优化一下代码,维护了这么多年的程序已有百万余行且VS2015还尚未支持检查类成员初始化的方法.,于是想写 ...