您的位置:首页 > 产品设计 > UI/UE

UIView控件

2016-05-11 23:32 471 查看

UIView

本节小结知识点:

什么是控件?

控件的共同属性有哪些?

父控件、子控件

UIView的常见属性

UIView的常见对象方法

补充:

1. 什么是控件?

屏幕上的所有UI元素都叫做控件,也有人叫做视图、组件

按钮(UIButton)、文本(UILabel)都是控件

2. 控件的共同属性有哪些?

- 尺寸
- 位置
- 背景色
- ......


苹果将控件的共同属性都抽取到父类UIView中

所有的控件最终都继承自UIView

UIButton、UILabel都是继承自UIView(可以查看头文件)

3. 父控件、子控件

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

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

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

每一个控制器(UIViewController)内部都有个默认的UIView属性

@property(nonatomic,retain) UIView *view;


控制器中管理的其他所有控件都是这个view的子控件(直接或者间接)

注意:间接是指子控件的子控件。

4. UIView的常见属性

获得自己的父控件对象

@property(nonatomic,readonly) UIView *superview;


获得自己的所有子控件对象

@property(nonatomic,readonly,copy) NSArray *subviews;


控件的ID(标识),父控件可以通过tag来找到对应的子控件(这里一般要结合方法使用)

@property(nonatomic) NSInteger tag;


控件的形变属性(可以设置旋转角度、比例缩放、平移等属性)

@property(nonatomic) CGAffineTransform transform;


5. UIView的常见对象方法

添加一个子控件view

- (void)addSubview:(UIView *)view;


从父控件中移除

- (void)removeFromSuperview;


根据一个tag标识找出对应的控件(一般都是子控件或间接子控件)

- (UIView *)viewWithTag:(NSInteger)tag;


内部查找原理先匹配自己、在匹配子控件(如果子控件又有子控件,则会进入子控件遍历),找到就返回并不在查找

如果仅仅是为了查找一个控件,不建议使用tag这个方法,这种遍历的形式性能较差,建议定义一个属性变量定义直接查找;

// 遍历过程,如下伪代码
//- (UIView *)viewWithTag:(NSInteger)tag
//{
//    if (self.tag == tag) return self;
//    for (UIView *subview in self.subviews) {
//        if (subview.tag == tag) return subview;
//    }
//    return nil;
//}


6. 补充:

// 当控制器的view加载完毕后会自动调用这个方法1次
- (void)viewDidLoad{

}


// 当点击控制器的view就会自动调用这个方法
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
// 移除红色的view :removeFromSuperview 把左边的控件从父控件中移除
//   [self.redView removeFromSuperview];
UIView * redView = [self.view viewWithTag:11];
[redView removeFromSuperview];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息