免费开源的iOS开发学习平台

UIKit框架简介+初识UI控件

UIView是所有UI控件的父类。UIView类的对象负责屏幕上一个矩形区域的显示和行为动作。我们熟知的UIButton,UIImageview等等都继承自UIView,因此,UIView所具备的属性和方法,其子类也都同样具备。

1、UIView的简介

UIView类(视图类)负责管理屏幕上的一块矩形区域,包括这个区域内的显示样式,比如背景颜色,大小,以及行为动作,例如监测用户点击等触碰事件。

视图还可以用于管理一个或者多个子视图。用户看到的某个样式,有可能是多个视图叠加后的显示效果。视图的这种布局方式,也称为视图层次,一个父视图可以包含任意多个子视图。同时,父视图的属性有时也会影响到子视图的样式以及用户交互行为。

总体来讲,视图类的主要作用有如下3个方面:

  • 样式显示与动画:负责自身矩形区域内样式的显示,以及某些属性(大小、位置、角度)变化时的动画过渡效果;
  • 布局与子视图管理:管理子视图
  • 事件处理:接收触摸事件

在iOS开发中,UIView与UIViewController紧密协作,UIViewController负责UIView的加载与卸载。有关UIViewController的介绍,可以参考UIViewController相关教程。

2、UIKit族图

通过UIKit的族图可以看到,UIView继承自UIResponder,因此UIView可以响应用户交互。另外,我们熟知的一些常用控件都继承自UIView。需要特别说明的是,UIWindow也是继承自UIView,窗口可以认为是一个特殊的View。

3、最常使用的UIView属性

在iOS开发中,有些UIView的属性是非常常用的,在此给大家简单列举一些,后面课程中会做详细讲解。

  • UIView有关样式的常用属性
@property(nonatomic) CGRect            frame;
@property(nonatomic) CGRect            bounds;
@property(nonatomic) CGPoint           center; 
@property(nonatomic) CGAffineTransform transform;
@property(nullable, nonatomic,copy)            UIColor          *backgroundColor; 
@property(nonatomic)                 CGFloat           alpha; 
@property(nonatomic,getter=isHidden) BOOL              hidden; 
  • UIView管理子视图的常用属性和方法
@property(nullable, nonatomic,readonly) UIView       *superview;
@property(nonatomic,readonly,copy) NSArray *subviews;
@property(nullable, nonatomic,readonly) UIWindow     *window;
- (void)removeFromSuperview;
- (void)addSubview:(UIView *)view;
- (void)bringSubviewToFront:(UIView *)view;
  • UIView有关动画的属性和方法
+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_AVAILABLE_IOS(4_0); 
+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations NS_AVAILABLE_IOS(4_0);
  • UIView有关交互的常用属性与方法
@property(nullable, nonatomic,copy) NSArray *gestureRecognizers;
- (void)addGestureRecognizer:(UIGestureRecognizer*)gestureRecognizer;
- (void)removeGestureRecognizer:(UIGestureRecognizer*)gestureRecognizer ;