码迷,mamicode.com
首页 > 移动开发 > 详细

IOS开发UI基础UIView

时间:2015-07-09 06:13:39      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:

主要介绍下UIView得基本概念和一些属性的介绍至于属性的用户后面会由详细的介绍

-、UIView基本概念

1.什么是控件?

屏幕上所有的UI元素都叫做控件 (也有很多书中叫做视图 组件) 比如 按钮(UIButton) 文本(UILabel)都是控件

控件的共同属性有哪些?

尺寸

位置

背景色

...........

苹果将控件的共同属性都抽取到父类UIView中 所有的控件最终都继承自UIView中 UIBUtton UIView都继承自UIView

 

技术分享

父控件、子控件

每个控件都是个容器 能够容纳其他控件

内部小控件是大控件的子控件

大控件是内部小控件的父控件

每一个控制器(UIViewController) 内部都有个默认的UIView属性控制器中管理的其他所有控件都是这个view的直接或间接子控件

@property(nonatomic,retain)UIView* view; 

 

2.UIView的常见属性
 
@property(nonatomic,readonly) UIView *superview;    ? 获得?自?己的?父控件对象
 

@property(nonatomic,readonly,copy) NSArray *subviews; ? 获得?自?己的所有?子控件对象

 

@property(nonatomic) NSInteger tag; ? 控件的ID(标识),?父控件可以通过tag来找到对应的?子控件

 

@property(nonatomic) CGAffineTransform transform;? 控件的形变属性(可以设置旋转?角度、?比例缩放、平移等属性)

 

- (void)addSubview:(UIView *)view; ? 添加?一个?子控件view

- (void)removeFromSuperview;  ? 从?父控件中移除


- (UIView *)viewWithTag:(NSInteger)tag;  ? 根据?一个tag标识找出对应的控件(?一般都是?子控件)

介绍以下三个属性之前 首先我们要了解以下UIKit坐标系:

在UIKit中 坐标系的原点(0,0)在左上角 X值向右正向延伸 Y值向下正向延伸

@property(nonatomic) CGRect frame;? 控件矩形框在?父控件中的位置和尺?寸(以?父控件的左上?角为坐标原点)
 
@property(nonatomic) CGRect bounds;? 控件矩形框的位置和尺?寸(以?自?己左上?角为坐标原点,所以bounds的x、y?一般为0)
 
@property(nonatomic) CGPoint center;? 控件中点的位置(以?父控件的左上?角为坐标原点)
 
UIView属性设置示例
1.alpha :设置视图的透明度 默认为1
 
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];  // 设置背景颜色为红色

UIView常用添加子视图的方法

  • addSubview  添加一个控件到一个控件里面
  • bringSubviewToFront 将一个控件移到前面
  • sendSubviewToBack 将一个控件移到后面
  • removeFromSuperview 把控件移除
  • insertSubview:atIndex 插入视图并指定索引
  • insertSubview:aboveSubview;插入视图到某一个视图之上
  • insertSubview:belowSubview ;插入视图到某个视图之下
  • exchangeSubviewAtIndex:withSubviewAtIndex:
 
以上属性的用法 读者可以自己逐一尝试 ,不用记住 暂时了解下即可  后面我会对每一个属性的用法 利用一些小案例对他们进行深入的讲解
 

IOS开发UI基础UIView

标签:

原文地址:http://www.cnblogs.com/syios/p/4631814.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!