图形的初级变化使用View

图形的初级变化使用View

view就是一个试图,而viewController就是这些试图的一个容器--试图控制器。以下内容是view的一小部分关联,主要是按钮的使用,试图的变化。在Main.storyboard里面添加控件,如下图

试图上的button分别是:

  1. switch按钮。我们常见的一种按钮,有打开喝关闭两种状态。
  2. 灰色区域--一个view添加背景色为灰色,目的是让读者看见将要变化的一段区域。
  3. Action按钮。使view变化颜色。
  4. Stop按钮。使变化颜色和转动暂停。
  5. rotation按钮。点击后使 view转动。

代码部分:

  1.在代码中添加view、switch,_view.link.

1 @property (weak, nonatomic) IBOutlet UIView *myView

2 @property (weak, nonatomic) IBOutlet UISwitch *mySwitch;

{
    UIView *_view;
    //颜色数组
    NSMutableArray *_colorArray;

}

@property (nonatomic, strong) CADisplayLink *link;

  2.循环创建7个新的试图view,并且为每一个view都添加背景色。随机颜色的设置和固定颜色写入。

 1     //创建视图 并添加到父视图
 2     for (int i = 0 ; i < 7; i++) {
 3         _view = [[UIView alloc] initWithFrame:CGRectMake(10 * i, 10 * i, self.myView.bounds.size.width - 2 * 10 * i, self.myView.bounds.size.height - 2 * 10 * i)];
 4         /*
 5         //随机颜色设置
 6         _colorArray = [NSMutableArray arrayWithObjects:
 7                        [UIColor colorWithRed:arc4random_uniform(255)/255.0 green:arc4random_uniform(255)/255.0 blue:arc4random_uniform(255)/255.0 alpha:1],
 8                        [UIColor colorWithRed:arc4random_uniform(255)/255.0 green:arc4random_uniform(255)/255.0 blue:arc4random_uniform(255)/255.0 alpha:1],
 9                        [UIColor colorWithRed:arc4random_uniform(255)/255.0 green:arc4random_uniform(255)/255.0 blue:arc4random_uniform(255)/255.0 alpha:1],
10                        [UIColor colorWithRed:arc4random_uniform(255)/255.0 green:arc4random_uniform(255)/255.0 blue:arc4random_uniform(255)/255.0 alpha:1],
11                        [UIColor colorWithRed:arc4random_uniform(255)/255.0 green:arc4random_uniform(255)/255.0 blue:arc4random_uniform(255)/255.0 alpha:1],
12                        [UIColor colorWithRed:arc4random_uniform(255)/255.0 green:arc4random_uniform(255)/255.0 blue:arc4random_uniform(255)/255.0 alpha:1],
13                        [UIColor colorWithRed:arc4random_uniform(255)/255.0 green:arc4random_uniform(255)/255.0 blue:arc4random_uniform(255)/255.0 alpha:1], nil ];
14         */
15
16         //给颜色建立数组,(最麻烦的方法)
17         _colorArray = [NSMutableArray arrayWithObjects:[UIColor redColor],[UIColor greenColor],[UIColor blueColor],[UIColor grayColor],[UIColor yellowColor],[UIColor purpleColor],[UIColor orangeColor], nil];
18         //并且是每个view都有颜色
19         _view.backgroundColor = _colorArray[i];
20         //添加到view显示
21         [self.myView addSubview:_view];
22
23     }

  3.颜色变化效果代码及效果图

 1 //开始动画
 2 - (IBAction)startAction:(UIButton *)sender {
 3     //判断switch是否打开
 4     if (_mySwitch.isOn) {
 5   //每秒调用一次方法
 6 //  [NSTimer scheduledTimerWithTimeInterval:.1 target:self selector:@selector(action:) userInfo:nil repeats:YES];
 7     //作用:只能点击一次有效,点击多次无效
 8     if (self.link) {
 9         return;
10     }
11     //每秒调用60次方法
12     CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(action:)];
13
14     [link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
15     //设置全局的link
16     self.link = link;
17     }
18 }
19
20 - (void)action:(CADisplayLink *)timer{
21 //- (void)action:(NSTimer *)timer{//使用NSTimer的时候
22     //将每张视图加入到数组里面
23     NSArray* subViews = [self.myView subviews];
24     //循环遍历数组,改变颜色
25     for (int i = 0; i < 7; i++) {
26         _view = subViews[i];
27         //使颜色轮流变化
28         if (i == 6) {
29             //当颜色是最后一个时候,变为第一个
30             _colorArray[i] = _colorArray[0];
31         }else{
32             //把颜色变为下一个
33             _colorArray[i] = _colorArray[i+1];
34         }
35         //给每一个view添加背景色
36         _view.backgroundColor = _colorArray[i];
37         [self.myView addSubview:_view];
38     }
39 }
  1. NSTimer与CADisplayLink区别:NSTIimer每秒(可以设置秒数,比如0.1秒)调用一次,看着比较机械,而CADisplayLink每秒调用方法60次(刷新60次),速度太快,看不清楚。
  2. 当switch打开的时候,点击Action有效果,而关闭后则点击无效果。

这是CADisplayLink效果图,录制效果不佳,实现效果是可以的

这是NSTimer(时间为1秒)效果图,使用NSTimer时候没有暂停方法。

点击Stop之后,会暂停,无论是颜色变化还是旋转,都会暂停,使用的是同一个方法。

1 //停止按钮
2 - (IBAction)stop:(UIButton *)sender {
3     //从所有runloop模式删除对象(如果已经隐式地释放接收机留存)和释放的目标对象
4     [self.link invalidate];
5     //将self.link设置为nil
6     self.link = nil;
7 }

旋转代码:

 1 //旋转按钮
 2 - (IBAction)rotation {
 3     if (self.link)    return;
 4      CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(rotationAct)];
 5     [link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
 6     self.link = link;
 7 }
 8 //旋转动画
 9 - (void)rotationAct {
10     //这是转动效果
11     //M_PI/100是因为转动太快,如此之后看着正常
12     self.myView.transform = CGAffineTransformRotate(self.myView.transform, M_PI/100);
13         //开始缓慢
14         [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
15         [self.myView addSubview:_view];
16

总结:

  1. CADisplayLinkd的使用以及停止的使用。
  2. 角度旋转。transform的使用
  3. 颜色互相变化的方法。

欢迎读者提出宝贵意见,欢迎查阅!如需转载,请标明出处。

时间: 2025-01-06 02:38:05

图形的初级变化使用View的相关文章

Android(java)学习笔记240:多媒体之图形颜色的变化

1.相信大家都用过美图秀秀中如下的功能,调整颜色: 2. 下面通过案例说明Android中如何调色: 颜色矩阵 ColorMatrix cm = new ColorMatrix(); paint.setColorFilter(new ColorMatrixColorFilter(cm)); 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 New Red Value = 1*128 + 0*128 + 0*128 + 0*0 + 0 New Blue Value =

MVC初级知识之——View与Controller的讲解

Controller是MVC中比较重要的一部分.几乎所有的业务逻辑都是在这里进行处理的,并且从Model中取出数据.在ASP.NET MVC Preview5中,将原来的Controller类一分为二,分为了Controller类和ControllerBase类.Controller类继承自ControllerBase类,而ControllerBase实现是了IController接口. ControllerBase实现了IController接口的Execute方法,在Route匹配到Cont

Android(java)学习笔记237:多媒体之图形的变化处理

1.图形的缩放 (1)布局文件activity_main.xml如下: 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height=

图形绘制 Canvas Paint Path 详解

图形绘制简介        Android中使用图形处理引擎,2D部分是android SDK内部自己提供,3D部分是用Open GL ES 1.0.大部分2D使用的api都在android.graphics和android.graphics.drawable包中.他们提供了图形处理相关的Canvas.ColorFilter.Point.RetcF等类,还有一些动画相关的AnimationDrawable.BitmapDrawable.TransitionDrawable等.       以图形

Android基础入门教程——2.1 View与ViewGroup的概念

Android基础入门教程--2.1 View与ViewGroup的概念 标签(空格分隔): Android基础入门教程 本节引言: 告别了第一章,迎来第二章--Android中的UI(User Interface)组件的详解, 而本节我们要学习的是所有控件的父类View和ViewGroup类!突发奇想,直接翻译官方文档对 这两个东西的介绍吧,对了,天朝原因,google上不去,Android developer上不去,我们可以 改hosts或者用vpn代理,当然也可以像笔者一样使用国内的API

css写的常见图形

一直都没有为css的分类写点东西,今天找了一些资料来写一写这个css的常见图形,开发中会用到的哦! 从最简单的正方形说: width: 100px; height: 100px; background: red; 长方形: width: 200px; height: 100px; background: red; 圆: width: 100px; height: 100px; background: red; -moz-border-radius: 50px; -webkit-border-ra

【单页应用】view与model相关梳理

前情回顾 根据之前的学习,我们形成了一个view与一个messageCenterview这块来说又内建了一套mvc的东西,我们这里来理一下首先View一层由三部分组成:① view② dataAdpter③ viewController view一块两个重要数据是模板以及对应data,一个状态机status这里view只负责根据状态取出对应的模板,而后根据传入的数据返回组装好的html这里一个view多种状态是什么意思呢?比如我有一个组件,但是里面有一圈数据是需要Ajax请求的,所以我的view

View Programming Guide for iOS 视图编程指南 - iOS

1 有关 Windows and Views 每个应用都至少有一个 window 和一个 view. 1.1 添加额外的 Window 一般在有外界显示设备的时候才需要添加额外的 window 下面的代码举了一个例子,这里假定对象实现了方法 externalWindow,externalWindow 存储一个 window 的引用 - (void)configureExternalDisplayAndShowWithContent:(UIViewController*)rootVC { // C

利用图形上下文画线

方式一. // 在这里面绘制,绘图的内容,因为只有在这里面才能获取跟当前view相关联的图形上下文. // 在这个view第一次即将显示的时候调用. // rect 要画图控件的bonds - (void)drawRect:(CGRect)rect { // 1.获取跟当前控件相关联的图形上下文 CGContextRef contexRef = UIGraphicsGetCurrentContext(); // 2.拼接绘图的路径 CGMutablePathRef path = CGPathCr