转圈圈定制加载中视图

//
//  HYCircleLoadingView.h
//  HYCircleLoadingViewExample
//
//  Created by Shadow on 14-3-7.
//  Copyright (c) 2014年 Shadow. All rights reserved.
//

#import <UIKit/UIKit.h>

/*!
 * @brief 圆形转圈圈加载等待视图
 * @author huangyibiao
 */
@interface HYBCircleLoadingView : UIView

// 线宽
// default is 1.0f
@property (nonatomic, assign) CGFloat lineWidth;

// 线的颜色
// default is [UIColor lightGrayColor]
@property (nonatomic, strong) UIColor *lineColor;

// 是否添加动画
// default is YES
@property (nonatomic, readonly) BOOL isAnimating;

// 开始、结束动画效果
- (void)startAnimation;
// 结束动画的时候会移除掉
- (void)stopAnimation;

@end
//
//  HYCircleLoadingView.m
//  HYCircleLoadingViewExample
//
//  Created by Shadow on 14-3-7.
//  Copyright (c) 2014年 Shadow. All rights reserved.
//

#import "HYBCircleLoadingView.h"

#define kAngelWithDegree(degree) (2 * M_PI / 360 * degree)

@interface HYBCircleLoadingView ()

// 角度
// 0.0 - 1.0
@property (nonatomic, assign) CGFloat angel;

@end

@implementation HYBCircleLoadingView

- (id)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        self.backgroundColor = [UIColor clearColor];
    }
    return self;
}

- (id)init {
    return [self initWithFrame:CGRectZero];
}

- (void)setAngel:(CGFloat)angel {
    _angel = angel;
    [self setNeedsDisplay];
    return;
}

- (void)startAnimation {
    if (self.isAnimating) {
        [self stopAnimation];
        [self.layer removeAllAnimations];
    }
    _isAnimating = YES;

    self.angel = kAngelWithDegree(30);
    [self startRotateAnimation];
    return;
}

- (void)stopAnimation {
    _isAnimating = NO;
    [self stopRotateAnimation];
    return;
}

- (void)startRotateAnimation {
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
    animation.fromValue = @(0);
    animation.toValue = @(2 * M_PI);
    animation.duration = 0.9f;
    animation.repeatCount = INT_MAX;
    [self.layer addAnimation:animation forKey:@"keyFrameAnimation"];

    [UIView animateWithDuration:0.3f animations:^{
        self.alpha = 1.0;
    } completion:nil];
    return;
}

- (void)stopRotateAnimation {
    [UIView animateWithDuration:0.3f animations:^{
        self.alpha = 0;
    } completion:^(BOOL finished) {
        _angel = 0;
        [self.layer removeAllAnimations];
    }];
    return;
}

- (void)drawRect:(CGRect)rect {
    if (self.angel <= 0) {
        _angel = 0;
    }

    CGFloat lineWidth = 1.f;
    UIColor *lineColor = [UIColor blueColor];
    if (self.lineWidth) {
        lineWidth = self.lineWidth;
    }
    if (self.lineColor) {
        lineColor = self.lineColor;
    }

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, lineWidth);
    CGContextSetStrokeColorWithColor(context, lineColor.CGColor);
    CGContextAddArc(context,
                    CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds),
                    CGRectGetWidth(self.bounds)/2-lineWidth,
                    kAngelWithDegree(120),
                    kAngelWithDegree(120) + kAngelWithDegree(330) * self.angel,
                    0);
    CGContextStrokePath(context);
    return;
}

@end
时间: 2024-10-02 23:25:32

转圈圈定制加载中视图的相关文章

VS加载设计视图失败

问题描述 加载用户控件或者设计视图有时候会报错,错误源于在构造函数中调用一些dll(由c++写的一些获取数据的方法,但是未登录前都会导致内存溢出),有没有办法标记.cs中的一段语句,使得vs在设计模式下不调用这段语句,这样设计视图就不会加载失败了,有人知道怎么用么? 解决方案 解决方案二:你确定是写在了构造函数中,而不是写到设计器的代码里去了?解决方案三:使得vs在设计模式下不调用这段语句,这样设计视图就不会加载失败了,----------如果你用户控件的DLL需要登录才能使用,你即使想出办法跳

MVC Ajax Helper或Jquery异步加载部分视图_jquery

废话不多说了,直接给大家贴代码了. Model: namespace MvcApplication1.Models { public class Team { public string Preletter { get; set; } public string Name { get; set; } } } 通过jQuery异步加载部分视图 Home/Index.cshtml视图中: @{ ViewBag.Title = "Index"; Layout = "~/Views/

淘宝描述加载中的解决方法

一般出现淘宝描述一直在加载中的原因是电脑的网络或者是浏览器本身出现了故障.先来说说浏览器吧.尝试重新清除浏览器的缓存垃圾文件,然后在重新登录网站.如果还是故障依旧的话换个浏览器吧.换了浏览器之后将电脑重启下再进入网站查看故障应该解决了吧. 如果上述方法都用过了还是解决不了的话,那就估计是网络的问题了.路由器或者拨号连接网络的话,就将路由器的线路重新插拔下,重新联网.最好还是打电话咨询下服务商的客服,也可能是服务器故障原因,然后让客服在后台帮你重新刷新自己的网线就可以了. 然后在点击[本地连接-属

如何为博客添加“正在加载中”的过度特效

看到很多博客都有这个,想起自己博客也需要,于是就加了一个,方法是这样的: 首先看你博客有没有加载jQuery,如果没有,请在头部加上引用这段js的代码: <script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.2.3.min.js"></script> 然后把如下代码加在模版文件中: <script type="text

ajax-《html》中,正在加载中的效果是怎样出来的?

问题描述 <html>中,正在加载中的效果是怎样出来的? 有的时候打开一个页面,会出来转圈的加载效果,这个效果是怎样实现的,是和ajax有关吗? 解决方案 使用的DIV 里面书写 "正在加载中..." 使用ajax 在ajax执行前调用 是DIV 显示出来, 并使其所在的 背景 变灰 不可操作,在ajax susess方法中,关闭 正在加载显示,并显示其他可操作界面 解决方案二: 你的猜测没错,缺省的情况下显示一张loading图,转呀转. 然后出发一个ajax加载后台数据

ae开发加载中的问题-AE中添加shp文件的问题!

问题描述 AE中添加shp文件的问题! 这段代码有问题吗?可以生成解决方案,但是还是不能加载shp文件啊.报错显示 开发加载中的问题-AE中添加shp文件的问题!-ae开发添加比例尺"> using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Tex

combobox-在EXT的可编辑表格里加入一个comboBox,但是下拉框选项一直处于加载中状态

问题描述 在EXT的可编辑表格里加入一个comboBox,但是下拉框选项一直处于加载中状态 comboBox是从本地取得数据,渲染函数我也写了.就是其选择一直加载不出来,但是点击的时候可以选择第一个选项.但是还是处于加载中状态 解决方案 怎么办 解决方案二: 代码发来看下?本地数据(配置data)不会出现加载状态才对

使用Bootstrap3和Ladda UI实现的多种按钮“加载中”效果体验

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 在线演示 大家在开发基于web的网站或者web应用中,常常在AJAX调用的过程中需要提示用户并且展示相关的"加载中"效果,类似的UI设计也非常多,比如,当点击一个按钮后,在它的旁边显示一个 "加载中" 文字,或者是添加一个"旋转GIF"动画效果图. 在今天这个教程中,我们将介绍来一个

android加载中对话框,循环,透明

1.自定义对话框 public class HKDialogLoading extends Dialog { Context context; public HKDialogLoading(Context context, int theme) { super(context, theme); this.context = context; ini(); } public HKDialogLoading(Context context) { super(context); this.contex