UI_UIView
2016-07-13 17:15
225 查看
//
// ViewController.m
// UIView
//
// Created by HarrySun on 16/7/10.
// Copyright © 2016年 . All rights reserved.
//
#import "ViewController.h"
#import "UIView+MotionEffect.h"
@interface
ViewController ()
@property (nonatomic,
strong) UIView *myView;
@property (nonatomic,
strong) UIView *animationView;
@property (nonatomic,
strong) UIImageView *imageView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super
viewDidLoad];
// UIView里面还有一些东西,但是还没来得及弄 = =
_myView = [[UIView
alloc]
initWithFrame:self.view.bounds];
// 用来初始化并返回一个新的视图对象,根据指定的CGRect(尺寸)
[self.view
addSubview:_myView];
// _myView = [[UIView alloc] initWithCoder:nil]; //
对于.xib,当你嵌入一个视图对象到xib,视图加载时默认调用的是该方法;例如:假如创建的view来自nib,那么将会调用initWithCoder,由系统来调用,自己不能调用。
NSLog(@"%d",_myView.isUserInteractionEnabled);
// 用户交互
_myView.tag =
101; //
标记
_myView.layer.cornerRadius =
5; //
圆角半径
_myView.layer.masksToBounds =
YES;
// 是否切除多余部分
_myView.frame =
CGRectMake(0,
0, 200,
200);
// 位置和尺寸(以父控件的左上角为坐标原点(0, 0))
_myView.center =
CGPointMake(self.view.bounds.size.width
/ 2,
self.view.bounds.size.height
/ 2);
// 中点(以父控件的左上角为坐标原点(0,
0))
_myView.bounds =
CGRectMake(50,
50,
200, 200);
// 位置和尺寸(以自己的左上角为坐标原点(0, 0))
_myView.multipleTouchEnabled =
YES;
// 支持多点触控
NSLog(@"_myView父类:%@",_myView.superview);
// 父类
NSLog(@"子类:%@",_myView.subviews);
// 子类
UIView *aView = [[UIView
alloc] init];
// [self.view addSubview:aView]; //
添加视图
// [_myView removeFromSuperview]; //
删除视图
// [self.view insertSubview:_myView atIndex:0]; //
插入一个视图
[_myView
exchangeSubviewAtIndex:0
withSubviewAtIndex:1];
// 更换视图位置
// 添加一个子控件view(被挡在_myView的下面)
[self.view
insertSubview:aView
belowSubview:_myView];
// 添加一个子控件view(盖在siblingSubview的上面)
[self.view
insertSubview:aView
aboveSubview:_myView];
[self.view
bringSubviewToFront:_myView];
// 将某个控件放到顶部
// [self.view sendSubviewToBack:_myView]; //
将某个控件放到底部
[_myView
isDescendantOfView:self.view];
// 是不是view的子控件或者子控件的子控件(是否为view的后代)
UIView *tagView = [self.view
viewWithTag:101];
// 通过tag值取得view
// [self.view addSubview:tagView];
tagView.clipsToBounds =
YES; //
超过控件边框范围的内容都剪掉
tagView.backgroundColor = [UIColor
redColor]; //
背景颜色
tagView.alpha =
0.5; //
透明度
tagView.hidden =
NO; // yes:隐藏 no:显示
tagView.opaque =
YES;
// 是否不是透明的(yes是不透明,no是透明)
tagView.layer.borderWidth =
1; //设置描边宽度
tagView.layer.borderColor = [UIColor
blueColor].CGColor;
// 设置描边的颜色(CALayer上用的是CGColor)
tagView.layer.shadowOffset =
CGSizeMake(50,
100);
// 阴影偏移量,width影响水平(正右负左),height影响垂直(正上负下)
tagView.layer.shadowColor = [UIColor
grayColor].CGColor;
//阴影偏移的颜色
tagView.layer.shadowOpacity =
1;
// 阴影的不透明度(默认是0,就是透明的)
// 属性动画
// [self pressPropertyAnimation];
// 过渡动画
// [self pressTranstionAnimation];
_animationView = [[UIView
alloc] initWithFrame:CGRectMake(0,
0, 200,
200)];
_animationView.backgroundColor = [UIColor
redColor];
[self.view
addSubview:_animationView];
// 关键帧动画
[self
pressKeyFrameAnimation];
// 添加手势
[_animationView
addGestureRecognizer:[[UITapGestureRecognizer
alloc] initWithTarget:self
action:@selector(tap:)]];
/*
_imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1.png"]];
_imageView.center = CGPointMake(200, self.view.bounds.size.height - 200);
[self.view addSubview:_imageView];
_imageView.effectGroup = [UIMotionEffectGroup new];
[_imageView addXAxisWithValue:5.f YAxisWithValue:5.f];
*/
// autolayout
}
- (void)tap:(UITapGestureRecognizer *)sinder{
NSLog(@"tap");
// 删除手势
[_animationView
removeGestureRecognizer:sinder];
}
// 属性动画
- (void)pressPropertyAnimation{
[UIView
beginAnimations:@"改变大小"
context:NULL];
// 标记动画块开始
[UIView
setAnimationDuration:5.0f];
// 设置动画持续时间
[UIView
setAnimationDelegate:self];
// [UIView setAnimationDelay:1]; //
动画延迟执行时间
[UIView
setAnimationWillStartSelector:@selector(startAnimation)];
[UIView
setAnimationCurve:UIViewAnimationCurveEaseInOut];
// 定义动画的曲线
[UIView
setAnimationRepeatCount:20];
// 动画的重复次数
[UIView
setAnimationRepeatAutoreverses:YES];
// 动画往返执行,必须设置动画的重复次数
_myView.backgroundColor = [UIColor
colorWithRed:( arc4random() %
256 /
256.0 ) green:(
arc4random() % 256 /
256.0 )
blue:( arc4random() %
256 /
256.0 ) alpha:1];
[UIView
commitAnimations];
// 提交并执行动画
}
// 过渡动画
- (void)pressTranstionAnimation{
// 准备动画
[UIView
beginAnimations:@"过渡动画"
context:NULL];
[UIView
setAnimationDuration:5];
[UIView
setAnimationRepeatCount:50];
// 设置过渡样式
[UIView
setAnimationTransition:UIViewAnimationTransitionFlipFromLeft
forView:self.myView
cache:YES];
self.myView.backgroundColor
= [UIColor
colorWithRed:arc4random() %
256 /
255.0 green:arc4random() %
256 /
255.0 blue:arc4random() %
256 /
255.0 alpha:0.5];
[UIView
commitAnimations];
}
// block动画
- (void)pressBlockAnimation{
// 动画时长 block
// [UIView animateWithDuration:2 animations:^{
// self.myView.backgroundColor = [UIColor orangeColor];
// }];
[UIView
animateWithDuration:2
animations:^{
self.myView.backgroundColor
= [UIColor orangeColor];
} completion:^(BOOL finished) {
if (finished) {
// 判断动画是否完成
NSLog(@"动画完成");
}
}];
}
// 关键帧动画
- (void)pressKeyFrameAnimation{
// 创建动画
CAKeyframeAnimation *keyFrame = [CAKeyframeAnimation
animationWithKeyPath:@"backgroundColor"];
[keyFrame setDuration:10];
// 修改属性
keyFrame.values =
@[(id)[UIColor
redColor].CGColor, (id)[UIColor
orangeColor].CGColor, (id)[UIColor
yellowColor].CGColor, (id)[UIColor
greenColor].CGColor, (id)[UIColor
blueColor].CGColor];
// keyTime代表了出现动画的时刻,值必须是递增的
keyFrame.keyTimes =
@[@(0.3), @(0.5),
@(0.6), @(0.7),
@(0.9)];
[self.animationView.layer
addAnimation:keyFrame
forKey:nil];
}
#pragma mark - AnimationDelegate
//动画将要开始时调用
- (void)animationWillStart:(NSString *)animationID context:(void *)context{
NSLog(@"start: %@, %@", animationID, context);
}
//动画结束时调用
- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished
context:(void *)context{
NSLog(@"stop: %@, %@", animationID, context);
}
- (void)startAnimation{
NSLog(@"动画开始");
}
- (void)didReceiveMemoryWarning {
[super
didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
// ViewController.m
// UIView
//
// Created by HarrySun on 16/7/10.
// Copyright © 2016年 . All rights reserved.
//
#import "ViewController.h"
#import "UIView+MotionEffect.h"
@interface
ViewController ()
@property (nonatomic,
strong) UIView *myView;
@property (nonatomic,
strong) UIView *animationView;
@property (nonatomic,
strong) UIImageView *imageView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super
viewDidLoad];
// UIView里面还有一些东西,但是还没来得及弄 = =
_myView = [[UIView
alloc]
initWithFrame:self.view.bounds];
// 用来初始化并返回一个新的视图对象,根据指定的CGRect(尺寸)
[self.view
addSubview:_myView];
// _myView = [[UIView alloc] initWithCoder:nil]; //
对于.xib,当你嵌入一个视图对象到xib,视图加载时默认调用的是该方法;例如:假如创建的view来自nib,那么将会调用initWithCoder,由系统来调用,自己不能调用。
NSLog(@"%d",_myView.isUserInteractionEnabled);
// 用户交互
_myView.tag =
101; //
标记
_myView.layer.cornerRadius =
5; //
圆角半径
_myView.layer.masksToBounds =
YES;
// 是否切除多余部分
_myView.frame =
CGRectMake(0,
0, 200,
200);
// 位置和尺寸(以父控件的左上角为坐标原点(0, 0))
_myView.center =
CGPointMake(self.view.bounds.size.width
/ 2,
self.view.bounds.size.height
/ 2);
// 中点(以父控件的左上角为坐标原点(0,
0))
_myView.bounds =
CGRectMake(50,
50,
200, 200);
// 位置和尺寸(以自己的左上角为坐标原点(0, 0))
_myView.multipleTouchEnabled =
YES;
// 支持多点触控
NSLog(@"_myView父类:%@",_myView.superview);
// 父类
NSLog(@"子类:%@",_myView.subviews);
// 子类
UIView *aView = [[UIView
alloc] init];
// [self.view addSubview:aView]; //
添加视图
// [_myView removeFromSuperview]; //
删除视图
// [self.view insertSubview:_myView atIndex:0]; //
插入一个视图
[_myView
exchangeSubviewAtIndex:0
withSubviewAtIndex:1];
// 更换视图位置
// 添加一个子控件view(被挡在_myView的下面)
[self.view
insertSubview:aView
belowSubview:_myView];
// 添加一个子控件view(盖在siblingSubview的上面)
[self.view
insertSubview:aView
aboveSubview:_myView];
[self.view
bringSubviewToFront:_myView];
// 将某个控件放到顶部
// [self.view sendSubviewToBack:_myView]; //
将某个控件放到底部
[_myView
isDescendantOfView:self.view];
// 是不是view的子控件或者子控件的子控件(是否为view的后代)
UIView *tagView = [self.view
viewWithTag:101];
// 通过tag值取得view
// [self.view addSubview:tagView];
tagView.clipsToBounds =
YES; //
超过控件边框范围的内容都剪掉
tagView.backgroundColor = [UIColor
redColor]; //
背景颜色
tagView.alpha =
0.5; //
透明度
tagView.hidden =
NO; // yes:隐藏 no:显示
tagView.opaque =
YES;
// 是否不是透明的(yes是不透明,no是透明)
tagView.layer.borderWidth =
1; //设置描边宽度
tagView.layer.borderColor = [UIColor
blueColor].CGColor;
// 设置描边的颜色(CALayer上用的是CGColor)
tagView.layer.shadowOffset =
CGSizeMake(50,
100);
// 阴影偏移量,width影响水平(正右负左),height影响垂直(正上负下)
tagView.layer.shadowColor = [UIColor
grayColor].CGColor;
//阴影偏移的颜色
tagView.layer.shadowOpacity =
1;
// 阴影的不透明度(默认是0,就是透明的)
// 属性动画
// [self pressPropertyAnimation];
// 过渡动画
// [self pressTranstionAnimation];
_animationView = [[UIView
alloc] initWithFrame:CGRectMake(0,
0, 200,
200)];
_animationView.backgroundColor = [UIColor
redColor];
[self.view
addSubview:_animationView];
// 关键帧动画
[self
pressKeyFrameAnimation];
// 添加手势
[_animationView
addGestureRecognizer:[[UITapGestureRecognizer
alloc] initWithTarget:self
action:@selector(tap:)]];
/*
_imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1.png"]];
_imageView.center = CGPointMake(200, self.view.bounds.size.height - 200);
[self.view addSubview:_imageView];
_imageView.effectGroup = [UIMotionEffectGroup new];
[_imageView addXAxisWithValue:5.f YAxisWithValue:5.f];
*/
// autolayout
}
- (void)tap:(UITapGestureRecognizer *)sinder{
NSLog(@"tap");
// 删除手势
[_animationView
removeGestureRecognizer:sinder];
}
// 属性动画
- (void)pressPropertyAnimation{
[UIView
beginAnimations:@"改变大小"
context:NULL];
// 标记动画块开始
[UIView
setAnimationDuration:5.0f];
// 设置动画持续时间
[UIView
setAnimationDelegate:self];
// [UIView setAnimationDelay:1]; //
动画延迟执行时间
[UIView
setAnimationWillStartSelector:@selector(startAnimation)];
[UIView
setAnimationCurve:UIViewAnimationCurveEaseInOut];
// 定义动画的曲线
[UIView
setAnimationRepeatCount:20];
// 动画的重复次数
[UIView
setAnimationRepeatAutoreverses:YES];
// 动画往返执行,必须设置动画的重复次数
_myView.backgroundColor = [UIColor
colorWithRed:( arc4random() %
256 /
256.0 ) green:(
arc4random() % 256 /
256.0 )
blue:( arc4random() %
256 /
256.0 ) alpha:1];
[UIView
commitAnimations];
// 提交并执行动画
}
// 过渡动画
- (void)pressTranstionAnimation{
// 准备动画
[UIView
beginAnimations:@"过渡动画"
context:NULL];
[UIView
setAnimationDuration:5];
[UIView
setAnimationRepeatCount:50];
// 设置过渡样式
[UIView
setAnimationTransition:UIViewAnimationTransitionFlipFromLeft
forView:self.myView
cache:YES];
self.myView.backgroundColor
= [UIColor
colorWithRed:arc4random() %
256 /
255.0 green:arc4random() %
256 /
255.0 blue:arc4random() %
256 /
255.0 alpha:0.5];
[UIView
commitAnimations];
}
// block动画
- (void)pressBlockAnimation{
// 动画时长 block
// [UIView animateWithDuration:2 animations:^{
// self.myView.backgroundColor = [UIColor orangeColor];
// }];
[UIView
animateWithDuration:2
animations:^{
self.myView.backgroundColor
= [UIColor orangeColor];
} completion:^(BOOL finished) {
if (finished) {
// 判断动画是否完成
NSLog(@"动画完成");
}
}];
}
// 关键帧动画
- (void)pressKeyFrameAnimation{
// 创建动画
CAKeyframeAnimation *keyFrame = [CAKeyframeAnimation
animationWithKeyPath:@"backgroundColor"];
[keyFrame setDuration:10];
// 修改属性
keyFrame.values =
@[(id)[UIColor
redColor].CGColor, (id)[UIColor
orangeColor].CGColor, (id)[UIColor
yellowColor].CGColor, (id)[UIColor
greenColor].CGColor, (id)[UIColor
blueColor].CGColor];
// keyTime代表了出现动画的时刻,值必须是递增的
keyFrame.keyTimes =
@[@(0.3), @(0.5),
@(0.6), @(0.7),
@(0.9)];
[self.animationView.layer
addAnimation:keyFrame
forKey:nil];
}
#pragma mark - AnimationDelegate
//动画将要开始时调用
- (void)animationWillStart:(NSString *)animationID context:(void *)context{
NSLog(@"start: %@, %@", animationID, context);
}
//动画结束时调用
- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished
context:(void *)context{
NSLog(@"stop: %@, %@", animationID, context);
}
- (void)startAnimation{
NSLog(@"动画开始");
}
- (void)didReceiveMemoryWarning {
[super
didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
相关文章推荐
- GUI - Web前端开发框架
- 评价ui设计作品好坏的八个标准(界面/交互设计研究)
- Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
- 为Yahoo! UI Extensions Grid增加内置的可编辑器
- Cocos2d-x UI开发之文本类使用实例
- 谈谈对jquery ui tabs 的理解
- 在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
- UI Events 用户界面事件
- 基于Bootstrap的UI扩展 StyleBootstrap
- jQuery UI结合Ajax创建可定制的Web界面
- jquery UI Datepicker时间控件的使用方法(基础版)
- Hallo.js基于jQuery UI所见即所得的Web编辑器
- 基于jQuery UI CSS Framework开发Widget的经验
- jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
- jquery UI Datepicker时间控件的使用及问题解决
- jQuery UI设置固定日期选择特效代码分享
- Jquery ajax 同步阻塞引起的UI线程阻塞问题
- jQuery UI的Dialog无法提交问题的解决方法
- jQuery ui实现动感的圆角渐变网站导航菜单效果代码
- jquery UI Datepicker时间控件的使用方法(终结版)