图片加载动画

  项目中用到了调用前置摄像头的功能,然后拍出来的照片需要处理后才能让人脸朝上。刚开始我用重力感应去判断手机当时的方向,效果很好,不管手机是横放还是竖放,拍出来的照片始终是头朝上的,然而有一部手机在测试的时候出现了bug,只要使用了重力感应退出去的时候就会崩溃。后来将重力感应关闭后就不再崩溃了。重力感应是iOS4.0之前的方法,iOS5.0后用coremotion代替了重力感应,这种框架也能够监听手机的状态,然而我发现还是会崩溃,不过很难重现,于是准备放弃这种方法。毕竟只要出现一次崩溃就说明代码有问题,这是不允许的,毕竟是公司的项目,本人还是很有职业道德的。说到这里并没有进入今天的主题,只是想把之前遇到的坑拿出来分享一下,让那些遇到坑的伙伴们感到欣慰,因为还有很多爬坑的人啊(就像我)!

  今天的主题是图片加载动画,之所以写这篇博客,一来是好久没有写了,而来是想以后长期使用,比较简单的动画效果,各位大神献丑了。

  话不多说,直接上代码。

 1 #import <UIKit/UIKit.h>
 2
 3 @interface LMFLoadingView : UIView
 4
 5 #pragma mark --设置半径
 6 - (void)setRadiu:(CGFloat)radiu;
 7
 8 #pragma mark --设置点的个数,12或8个
 9 - (void)setPointNumber:(NSInteger)pointNumber;
10
11 #pragma mark --判断是否画图
12 - (void)createUI;
13
14 #pragma mark --画图
15 - (void)drawRect;
16
17 @end

  有些参数可以自行设置,该动画比较简单,有兴趣的伙伴可以随意改动。.m文件如下:

  1 #import "LMFLoadingView.h"
  2
  3 @interface LMFLoadingView ()
  4 @property (nonatomic, assign) CGFloat radiu;
  5 @property (nonatomic, assign) NSInteger pointNumber;
  6 @property (nonatomic, strong) UIColor *pointColor;
  7 @property (nonatomic, assign) CGFloat circleRadiu;
  8 @end
  9
 10 @implementation LMFLoadingView
 11
 12 - (instancetype)initWithFrame:(CGRect)frame
 13 {
 14     if (self = [super initWithFrame:frame])
 15     {
 16         self.backgroundColor = [UIColor blackColor];
 17         self.pointColor = [UIColor whiteColor];
 18         self.circleRadiu = self.frame.size.width/2.0 - 10;
 19         self.radiu = 1;
 20         self.pointNumber = 12;
 21     }
 22     return self;
 23 }
 24
 25 - (void)setRadiu:(CGFloat)radiu
 26 {
 27     _radiu = radiu;
 28     [self createUI];
 29 }
 30
 31 - (void)setPointNumber:(NSInteger)pointNumber
 32 {
 33     if (pointNumber < 12)
 34     {
 35         _pointNumber = 8;
 36     }
 37     else
 38     {
 39         _pointNumber = 12;
 40     }
 41     [self createUI];
 42 }
 43
 44 - (void)createUI
 45 {
 46     if (self.radiu > 0 && (self.pointNumber == 8 || self.pointNumber == 12))
 47     {
 48         NSArray *views = [self subviews];
 49         for (UIView *obj in views)
 50         {
 51             [obj removeFromSuperview];
 52         }
 53         [self drawRect];
 54     }
 55 }
 56
 57 - (void)drawRect
 58 {
 59     CGFloat angle = 90/((self.pointNumber/4.0-1)+1) * M_PI/180;
 60     for (int i=0; i<self.pointNumber; i++)
 61     {
 62         float x = self.circleRadiu * sinf(i*angle) + self.circleRadiu+10;
 63         float y = self.circleRadiu * cosf(i*angle) + self.circleRadiu+10;
 64         UIImageView *view = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.radiu*2, self.radiu*2)];
 65         view.image = [UIImage imageNamed:@"big_yellow_point"];
 66         //        view.layer.masksToBounds = YES;
 67 //        view.layer.cornerRadius = self.radiu;
 68         [view setCenter:CGPointMake(x, y)];
 69 //        view.backgroundColor = self.pointColor;
 70         [self addSubview:view];
 71         [self performSelector:@selector(startAnimat:) withObject:view afterDelay:i/12.0];
 72     }
 73 }
 74
 75 #pragma mark --画一张
 76
 77 - (void)startAnimat:(UIView *)view
 78 {
 79     CGPoint point = view.center;
 80
 81     [UIView animateWithDuration:0.5 animations:^{
 82
 83         view.frame = CGRectMake(0, 0, 5, 5);
 84         [view setCenter:point];
 85
 86     } completion:^(BOOL finished) {
 87
 88         [UIView animateWithDuration:0.5 animations:^{
 89
 90             view.frame = CGRectMake(0, 0, self.radiu, self.radiu);
 91             [view setCenter:point];
 92
 93         } completion:^(BOOL finished) {
 94             [self startAnimat:view];
 95         }];
 96
 97     }];
 98 }
 99
100 @end
时间: 2024-10-13 07:29:57

图片加载动画的相关文章

iOS开发——图形编程Swift篇&amp;CAShapeLayer实现圆形图片加载动画

CAShapeLayer实现圆形图片加载动画 几个星期之前,Michael Villar在Motion试验中创建一个非常有趣的加载动画. 下面的GIF图片展示这个加载动画,它将一个圆形进度指示器和圆形渐现动画结合.这个组合的效果有趣,独一无二和有点迷人. 这个教程将会教你如何使用Swift和Core Animatoin来重新创建这个效果.让我们开始吧! 基础 首先下载这个教程的启动项目,然后编译和运行.过一会之后,你应该看到一个简单的image显示: 这 个启动项目已经预先在恰当的位置将view

使用CAShapeLayer来实现圆形图片加载动画(objective c)实现

使用CAShapeLayer来实现圆形图片加载动画(objective c)实现 by 伍雪颖 效果图 博客地址: 英文链接 中文链接 代码实现: swift实现中文链接有 objective c实现(github)

为网格布局图片打造的超炫 CSS 加载动画

今天,我想与大家分享一些专门为网格布局的图像制作的很酷的 CSS 加载动画效果.您可以把这些效果用在你的作品集,博客或任何你想要的网页中.设置很简单.我们使用了下面这些工具库来实现这个效果: Normalize.css 来替代传统的 CSS 复位: ZURB Foundation 创建具有响应式的网格: Masonry 创建一个动态的网格布局: imagesLoaded 检查是否已加载图像: Infinite Scroll加载更多图片并追加到画廊. 现在,让我们来看看一些实际的代码,这应该是大家

自定义progressdialog加载动画,这里还有旋转的加载条,美团,多个图片动画

下载Demo:http://download.csdn.net/detail/menglele1314/8775497 public class MainActivity extends Activity { private Button submit; private AnimationDrawable fightnimation, fightnimationab; private ImageView pb, net, netab; private Dialog mLoading; priva

iOS图片加载框架学习之FlyImage

在iOS开发中,其图片加载新框架FlyImage 整合了SDWebImage,FastImageCache,AFNetworking的优点,是一个新的性能高效.接口简单的图片加载框架,下面小编就和大家一起来扒一扒这个框架. 特点 高效 可将多张小图解码后存储到同一张大图上,在同屏渲染多图时,效率极高: 支持 mmap 内存映射,高效的I/O操作,减少一次文件拷贝操作,同时减少内存占用: 支持 Byte Alignment 字节对其,渲染过程中,避免执行 CA::Render::copy_imag

iOS图片加载新框架 - FlyImage

FlyImage 整合了SDWebImage,FastImageCache,AFNetworking的优点,是一个新的性能高效.接口简单的图片加载框架. 特点 高效 可将多张小图解码后存储到同一张大图上,在同屏渲染多图时,效率极高: 支持mmap内存映射,高效的I/O操作,减少一次文件拷贝操作,同时减少内存占用: 支持Byte Alignment字节对其,渲染过程中,避免执行CA::Render::copy_image内存操作: 接口简单 支持UIImageView,CALayer Catego

iOS 正确选择图片加载方式

正确选择图片加载方式能够对内存优化起到很大的作用,常见的图片加载方式有下面三种: //方法1 UIImage *imag1 = [UIImage imageNamed:@"image.png"]; //方法2 UIImage *image2 = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image.png" ofType:nil]]; //方法3 NSData

Android中常见的图片加载框架

图片加载涉及到图片的缓存.图片的处理.图片的显示等.而随着市面上手机设备的硬件水平飞速发展,对图片的显示要求越来越高,稍微处理不好就会造成内存溢出等问题.很多软件厂家的通用做法就是借用第三方的框架进行图片加载. 开源框架的源码还是挺复杂的,但使用较为简单.大部分框架其实都差不多,配置稍微麻烦点,但是使用时一般只需要一行,显示方法一般会提供多个重载方法,支持不同需要.这样会减少很不必要的麻烦.同时,第三方框架的使用较为方便,这大大的减少了工作量.提高了开发效率.本文主要介绍四种常用的图片加载框架,

关于图片加载框架

接上篇,这篇开始对现在比较的流行的第三方图片加载框架做一个对比总结. 这篇文章介绍内容如下: 1.目前流行的图片加载框架有什么? 2.各自的使用方法 3.各自的优缺点 4.优化问题 一.目前流行的图片加载框架有什么? ImageLoader   Glide  Picasso  Fresso(2015年) 注:由于现在ImageLoader使用较少,本篇博文将不再对它进行阐述.主要以其它三个框架为主,有兴趣的同学可以自行学习. 二.各自的使用方法 Picasso:  Picasso .with(t