ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

iOS UIView控件 基础介绍

2022-04-25 01:32:52  阅读:232  来源: 互联网

标签:控件 property UIView iOS 视图 nonatomic 坐标系 view


 

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);


 

标签:控件,property,UIView,iOS,视图,nonatomic,坐标系,view
来源: https://www.cnblogs.com/A7d-haod/p/16188509.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有