iOS开发基础-UIView的使用
2016-03-25 10:36
435 查看
UIView的使用
UIView 原理
1.它是一个iOS开发中非常重要的类。
UILabel,UIButton,UIImageView父类或间接父类都是UIView,换句话说只要是界面上能看到的东西都是UIView
2.坐标系的属性和方法
@property(nonatomic) CGRect frame;
@property(nonatomic) CGRect bounds;
@property(nonatomic) CGPoint center;
@property(nonatomic) CGAffineTransform transform;
//另:frame bounds center三个属性相互关联,改变其中一个,另两个也会改变。
3.属性: 位置和大小, 背景颜色
方法: 显示和隐藏
把所有的控件的共同的属性和行为抽取出来, 形成了UIView视图类。
(1)位置frame
(2)背景颜色backgroundColor
(3)透明度alpha
(4)中心位置center
(5)设置大小bounds
(6)tag标签
(7)是否交互userInteractionEnabled
//是否与用户交互 默认YES
view.userInteractionEnabled = YES;
//UILabel UIImageView 默认交互是NO
//UIButton 默认交互是YES
(8)是否隐藏
//是否隐藏 默认是NO 如果是YES 相当于alpha = 0 隐藏后按钮不能被点击
view.hidden = NO;
4.视图层次感
【注】任何视图,都可以添加到另一个视图上面,但是每个视图只能有一个父视图。也就是说一个子视图被添加到另一个视图上,会从原父视图上脱离。
【注】子视图的坐标是相对于父视图的。以父视图左上角一点为原点。移动父视图,因为子视图的位置是相对的,所以会一起移动。
1.把view放在最上面bringSubviewToFront
2.把view放在最下面sendSubviewToBack
3.获取一个父视图superview(仅有一个)
//superview 拿到某视图的父试图
UIView *superView = redView.superview;
4.获取子视图数组(可以有多个)
//subviews拿到某视图所有的子视图
NSArray *arr = self.view.subviews;
5.销毁一个视图(removeFromSuperview)
6.子视图插入insertSubview
7.交换两个子视图(exchangeSubviewAtIndex)
//父试图可以改变子试图的层级关系
//把子试图放到最前面(上面)
[self.view bringSubviewToFront:redView];
5.UIView动画
/————–非Block动画制作——————–/
/*
//UIView动画,由类方法驱动
//从这里开始是动画的结果
[UIView beginAnimations:nil context:nil];
//设置延迟时间
[UIView setAnimationDelay:15];
//设置代理
[UIView setAnimationDelegate:self];
//设置代理回调的方法
[UIView setAnimationDidStopSelector:@selector(completed)];
//动画结束后,self要调用completed
*/
6.停靠模式
【注】停靠模式,是控制父视图改变大小时,子视图的变化方式。
【注】停靠模式并非服务于视图缩放,使用transform属性scale视图,根本是等比缩放。停靠模式是服务于父视图边界修改后,子视图的布局。
//自动改变子试图的大小 默认是NO 设置成YES子试图会跟着父试图改变大小
view.autoresizesSubviews = YES;
UIView 原理
1.它是一个iOS开发中非常重要的类。
UILabel,UIButton,UIImageView父类或间接父类都是UIView,换句话说只要是界面上能看到的东西都是UIView
2.坐标系的属性和方法
@property(nonatomic) CGRect frame;
@property(nonatomic) CGRect bounds;
@property(nonatomic) CGPoint center;
@property(nonatomic) CGAffineTransform transform;
//另:frame bounds center三个属性相互关联,改变其中一个,另两个也会改变。
3.属性: 位置和大小, 背景颜色
方法: 显示和隐藏
把所有的控件的共同的属性和行为抽取出来, 形成了UIView视图类。
(1)位置frame
(2)背景颜色backgroundColor
(3)透明度alpha
(4)中心位置center
(5)设置大小bounds
(6)tag标签
(7)是否交互userInteractionEnabled
//是否与用户交互 默认YES
view.userInteractionEnabled = YES;
//UILabel UIImageView 默认交互是NO
//UIButton 默认交互是YES
(8)是否隐藏
//是否隐藏 默认是NO 如果是YES 相当于alpha = 0 隐藏后按钮不能被点击
view.hidden = NO;
4.视图层次感
【注】任何视图,都可以添加到另一个视图上面,但是每个视图只能有一个父视图。也就是说一个子视图被添加到另一个视图上,会从原父视图上脱离。
【注】子视图的坐标是相对于父视图的。以父视图左上角一点为原点。移动父视图,因为子视图的位置是相对的,所以会一起移动。
1.把view放在最上面bringSubviewToFront
2.把view放在最下面sendSubviewToBack
3.获取一个父视图superview(仅有一个)
//superview 拿到某视图的父试图
UIView *superView = redView.superview;
4.获取子视图数组(可以有多个)
//subviews拿到某视图所有的子视图
NSArray *arr = self.view.subviews;
5.销毁一个视图(removeFromSuperview)
6.子视图插入insertSubview
7.交换两个子视图(exchangeSubviewAtIndex)
//父试图可以改变子试图的层级关系
//把子试图放到最前面(上面)
[self.view bringSubviewToFront:redView];
//把子试图放到最后面(下面) [self.view sendSubviewToBack:greenView]; //把某个子试图放到另一个子试图的上面 [self.view insertSubview:greenView aboveSubview:redView]; //把某个子试图放到另一个子试图的下面 [self.view insertSubview:greenView belowSubview:redView]; //把某个试图放到指定位置上 [self.view insertSubview:blueView atIndex:4]; //先添加的在最前面 数组元素的顺序是子视图显示的顺序 NSLog(@"%@",arr); for (UIView * view in self.view.subviews) { if ([view isKindOfClass:[UIView class]]) { NSLog(@"是UIView"); }else if ([view isKindOfClass:[UIButton class]]){ NSLog(@"是按钮"); } } UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(10, 10, 40, 10)]; label.text = @"label"; //任何视图都可以添加到任何试图上 [redView addSubview:label]; //把某视图从父视图移除 子试图调用这个方法 父试图不能主动移除子视图 [redView removeFromSuperview]; //如果这个试图移除了 它的子试图会一起移除
5.UIView动画
/————–非Block动画制作——————–/
/*
//UIView动画,由类方法驱动
//从这里开始是动画的结果
[UIView beginAnimations:nil context:nil];
//设置延迟时间
[UIView setAnimationDelay:15];
//设置代理
[UIView setAnimationDelegate:self];
//设置代理回调的方法
[UIView setAnimationDidStopSelector:@selector(completed)];
//动画结束后,self要调用completed
//设置动画执行时间 [UIView setAnimationDuration:5]; //动画可以修改任何UIView子类的坐标,大小,形变,色彩和透明度 view.frame = self.window.bounds; view.backgroundColor = [UIColor greenColor]; [UIView commitAnimations]; //完成动画结果的设置,开始执行动画
*/
/*-------------Block版本的动画效果------------------*/ void (^animations)(void) = ^(void){ view.frame = self.window.bounds; view.backgroundColor = [UIColor blueColor]; }; void (^completion)(BOOL) = ^(BOOL finished){ NSLog(@"动画结束!"); }; [UIView animateWithDuration:5 delay:15 options: UIViewAnimationOptionLayoutSubviews animations:animations completion:completion];
6.停靠模式
【注】停靠模式,是控制父视图改变大小时,子视图的变化方式。
【注】停靠模式并非服务于视图缩放,使用transform属性scale视图,根本是等比缩放。停靠模式是服务于父视图边界修改后,子视图的布局。
//自动改变子试图的大小 默认是NO 设置成YES子试图会跟着父试图改变大小
view.autoresizesSubviews = YES;
//子试图的停靠模式 subView.autoresizingMask = UIViewAutoresizingFlexibleHeight |UIViewAutoresizingFlexibleWidth; // ‘|’ 位运算符 // UIViewAutoresizingNone = 0, // UIViewAutoresizingFlexibleLeftMargin = 1 << 0, // 右边界和父视图的距离不变 左边界自由 // UIViewAutoresizingFlexibleWidth = 1 << 1, // 自由的宽度 // UIViewAutoresizingFlexibleRightMargin = 1 << 2, // 左边界和父视图的距离不变 右边界自由 // UIViewAutoresizingFlexibleTopMargin = 1 << 3, // 下边界和父视图的距离不变 上边界自由 // UIViewAutoresizingFlexibleHeight = 1 << 4, // 自由的高度 // UIViewAutoresizingFlexibleBottomMargin = 1 << 5 // 上边界和父视图的距离不变 下边界自由
相关文章推荐
- UIMenuController 实现长按显示自定义菜单功能
- iOS开发基础-UITextView&UITextField
- iOS开发基础-UIImageView&&UIImage的使用
- iOS开发基础-UIButton的使用
- iOS开发基础-UILabel的使用
- ui设计一
- UIViewController的生命周期及界面切换
- BZOJ 2037: [Sdoi2008]Sue的小球
- Building the System 编译安卓系统
- Scala Error: error while loading Suite, Scala signature Suite has wrong version expected: 5.0 found: 4.1 in Suite.class
- Android之UI简介
- iOS UISearchController TableView 实现简单搜索功能
- ligerUi 格式化日期
- 【iOS】iOS之Button segue弹出popOver消除(dismiss)问题
- PHP中include和require的区别详解
- 《iOS Human Interface Guidelines》——Netword Activity Indicator
- QueryPerformanceCounter
- WINP界面
- 《iOS Human Interface Guidelines》——Label
- java小程序之(GUI)确认对话框控制循环