iOS UIView控件 基础介绍

2022/4/25 6:14:24

本文主要是介绍iOS UIView控件 基础介绍,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 

UIView是表示的就是屏幕上的一个矩形区域,基本我们了解到的基础控件都是UIView的子类,比如UIlabel,UIsearchBar,UIimage等。

UIview的作用

负责内部区域的内容渲染。
负责内部区域的触摸事件。
管理本身的所有子视图。
处理基本的动画。

UIView的初始化

UIView *view =[ [UIView alloc] init];

UIView *view =[ [ UIView alloc ] initWithFrame:CGRectMake(x,y,weight,height);

UIview的常用基本属性:

@property(nonatomic) CGRect            frame; //UIview的位置(以父视图的左上角为原点和长宽)

@property(nonatomic) CGRect            bounds;  //(和frame一样来表示位置,但是以自身的坐标系为标准,不影响当前视图的位置,会影响子视图的位置)

@property(nonatomic) CGPoint           center; //视图的中心点

@property(nonatomic) NSInteger         tag; //控件标记,父控件可以通过tag寻找子控件

@property(nonatomic,getter=isHidden) BOOL hidden; //是否隐藏,默认是no;

@property(nonatomic,getter=isUserInteractionEnabled) BOOL userInteractionEnabled;  // 是否可以和用户进行交互,默认为YES

@property(nonatomic) BOOL clipsToBounds;  // 子视图超出父视图范围是否裁剪子视图,默认是NO

@property(nullable, nonatomic,readonly) UIView *superview;// 当前视图的父视图

@property(nullable, nonatomic,copy) UIColor      *backgroundColor //设置视图的背景颜色

@property(nonatomic)                 CGFloat           alpha;//透明度范围(0,1),0为完全透明,不显示

UIView的常用方法

// 添加子视图

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

// 从父视图中移除

- (void)removeFromSuperview;

// 将一个视图的层次设置成最上面

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

例如 :

    [self.view addSubview:view];

    [self.view addSubview:view1];

    [self.view bringSubviewToFront:(view)];

可以将view 拉到view上面显示

 

// 将一个视图的层次设置成最下面

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

// 插入指定视图的上面

- (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview;
// 插入指定视图的下面
- (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview;    

 

// 通过指定的标记值获取视图

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

需要自己给tag赋值,因为每个tag默认为0,否则会返回当前view。

 

frame和bounds的区别:

frame是每个view必备的属性,代表的是当前视图的位置和大小,没有设置他,当前视图是看不到的。位置需要有参照物才能确定,数学中我们用坐标系来确定坐标系中的某个点的位置,iOS中有它特有的坐标系。对于每个view的frame会以它的父视图建立坐标系来判断自己的位置。

  • 在iOS坐标系中以父视图的左上角为坐标原点,往为X正方向,往是Y正方向
  • frame中的位置是以父视图的坐标系为标准来确定当前视图的位置
  • 同样的默认情况下,本视图的左上角就是子视图的坐标原点
  • 更改frame中位置,则当前视图的位置会发生改变
  • 更改frame的大小,则当前视图以当前视图左上角为基准的进行大小的修改

 

bounds是每个view的必要属性,一般bounds不设置,它同样代表来view的大小和位置,每个视图都有自己的坐标系,且这个坐标系默认以自身的左上角为坐标原点,所有子视图以这个坐标系的原点为基准点。

当改变bounds的大小时,视图的center不会改变,相当于一种以中心点为基准的一种缩放。

当我们更改bounds的位置是,修改的是这个视图自己的坐标系,即当前视图不会改变,改变的是子视图的位置,因为子视图以父视图的坐标系为准。

比如默认(0,0) 改为(0,50);

 

 

 

 


  

修改后父视图的左上角不再是原点,而是从(0,0) 变为(0,50);


 



这篇关于iOS UIView控件 基础介绍的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程