标签:
主要介绍下UIView得基本概念和一些属性的介绍至于属性的用户后面会由详细的介绍
屏幕上所有的UI元素都叫做控件 (也有很多书中叫做视图 组件) 比如 按钮(UIButton) 文本(UILabel)都是控件
控件的共同属性有哪些?
尺寸
位置
背景色
...........
苹果将控件的共同属性都抽取到父类UIView中 所有的控件最终都继承自UIView中 UIBUtton UIView都继承自UIView
父控件、子控件
每个控件都是个容器 能够容纳其他控件
内部小控件是大控件的子控件
大控件是内部小控件的父控件
每一个控制器(UIViewController) 内部都有个默认的UIView属性控制器中管理的其他所有控件都是这个view的直接或间接子控件
@property(nonatomic,retain)UIView* view;
@property(nonatomic,readonly,copy) NSArray *subviews; ? 获得?自?己的所有?子控件对象
@property(nonatomic) NSInteger tag; ? 控件的ID(标识),?父控件可以通过tag来找到对应的?子控件
@property(nonatomic) CGAffineTransform transform;? 控件的形变属性(可以设置旋转?角度、?比例缩放、平移等属性)
- (void)removeFromSuperview; ? 从?父控件中移除
- (UIView *)viewWithTag:(NSInteger)tag; ? 根据?一个tag标识找出对应的控件(?一般都是?子控件)
介绍以下三个属性之前 首先我们要了解以下UIKit坐标系:
在UIKit中 坐标系的原点(0,0)在左上角 X值向右正向延伸 Y值向下正向延伸
1 self.view.alpha = 0 //完全透明 2 3 self.view.alpha = 1; //不透明
2.clipsToBounds 默认是NO 设置为YEW时 超出当前视图的尺寸的内容和子视图不会显示
self.view.clipsToBounds = YES; //超出view的尺寸的内容和子视图不会显示
3.hidden 默认是NO 当设置为YES时 视图就看不见了
1 self.view.hidden=YES ;// 隐藏当前视图
4.userInteractionEnabled 默认为YES 如果设置为NO View就不能和用户交互了 即不能响应事件
self.view.userInteractionEnabled = NO; //不能和用户交互 不能响应事件
5.tag 默认为0 用来标记控件的
self.view.tag = 10 ; //为view这个视图做一个标记为10 默认所有控件的标记为0
6.exclusiveTouch 默认为NO
exclusiveTouch 的意义在于: 如果当前设置了exclusiveTouch的UIView是整个触摸事件的第一响应者 那么到你所有的手指离开屏幕前其他的UIView是无法接受到整个事件周期内所有的触摸事件
7.CGRect frame
>表示控件的位置和尺寸 以父控件的左上角为坐标原点(0,0)
>修改这个属性 可以调整控件的位置和尺寸
8.CGPoint center
>表示控件的中点 以父控件的左上角为坐标原点
>修改这个属性 可以调整控件的位置
9.CGRect bounds
>表示控件的位置和尺寸 以自己的左上角为坐标原点 位置一般是(0,0)
>修改这个属性 只能调整控件的尺寸
10.CGAffineTransform transform
>表示控件的形变状态 旋转角度 缩放比例
>创建CGAffineTransform 的函数
CGAffineTransformMakeScale(CGFloat scaleX,CGFloat scaleY);//创建一个x,y方向的缩放比例分别为scaleX 、scaleY的形变值 CGAffineTransformMakeRotation(CGFloat angle);//创建一个旋转角度为angle的形变值 CGAffineTransformScale(CGAffineTransform t, CGFloat sx, CGFloat sy);//在形变值t的基础上,再进行缩放,x、y方向的缩放比例分别为sx、sy,然后返回一个新的形变值 CGAffineTransformRotate(CGAffineTransform t, CGFloat angle);//在形变值t的基础上,再进行旋转,旋转角度为angle,然后返回一个新的形变值
11.superview
返回当前视图的父视图
12.window 返回当前视图的窗口
获取根视图的superview 和 window 时 需要注意 在viewdidload中是获取不到的 viewdidload只是视图加载完成时调用,这个时候并没有添加到窗口中 因此需要在viewDidAppear方法中才能够获取到 那时候视图才被添加到窗口中
举例:
- (void)viewDidLoad { [super viewDidLoad]; NSLog(@"viewDidLoad-------%@",self.view.superview); //没有值 NSLog(@"viewDidLoad--------%@",self.view.window);//没有值 } - (void)viewDidAppear:(BOOL)animated { NSLog(@"viewDidAppear ----- %@",self.view.superview); //有值 NSLog(@"viewDidAppear -----%@",self.view.window);//有值 }
13.autoresizesSubviews 默认为YES 表示当父控件的尺寸发生改变时 子控件也会随着改变
14.autoresizingMask 默认为UIViewAutoresizingNone 不会自动伸缩
15.contentMode 设置内容模式
UIViewContentModeScaleToFill 不按照原宽高比例(长和宽不等比例增长)以任意比例填充。这样视图不会有空白,且内容可以全部显示。
UIViewContentModeAspectToFill 按照原长宽比例填充,不完全显示全部内容。这样内容可能溢出,但整个视图不会留有空白。
UIViewContentModeAspectToFit 按照原长宽比例(长和宽等比例增长),完全显示全部内容。这样容易照成左右或者上下留有空白。
16.backgroundColor 背景颜色
self.view.backgroundColor = [UIColor redColor]; // 设置背景颜色为红色
标签:
原文地址:http://www.cnblogs.com/syios/p/4631814.html