iOS UIView

作者: 风冰武 | 来源:发表于2018-10-23 10:07 被阅读0次

    1: 父类

    继承于:UIResponder
    

    2: 属性

    //创建视图的核心动画层的类(默认是CALayer类, 在为视图创建底层时使用)
    @property(class, nonatomic, readonly) Class layerClass; 
    
    //一个布尔值, 用于确定是否忽略用户事件并将其从事件队列中删除(默认为YES)
    @property(nonatomic,getter=isUserInteractionEnabled) BOOL userInteractionEnabled; 
    
    //tag值(默认为0)
    @property(nonatomic)                                 NSInteger tag;
    
    //视图层
    @property(nonatomic,readonly,strong)                 CALayer  *layer;
    
    //判断当前视图是否能够集中
    @property(nonatomic,readonly) BOOL canBecomeFocused;
    
    //当前视图是否集中
    @property (readonly, nonatomic, getter=isFocused) BOOL focused;
    
    //
    @property (nonatomic) UISemanticContentAttribute semanticContentAttribute NS_AVAILABLE_IOS(9_0);
    
    //
    @property (readonly, nonatomic) UIUserInterfaceLayoutDirection effectiveUserInterfaceLayoutDirection NS_AVAILABLE_IOS(10_0);
    
    
    

    3:方法

    //初始化并返回具有指定框架矩形的新分配的视图对象
    //参数:视图的框架矩形
    //返回:一个初始化的视图对象
    - (instancetype)initWithFrame:(CGRect)frame;
    
    //返回从给定反存档程序中的数据初始化的对象
    //参数:
    //返回:
    - (nullable instancetype)initWithCoder:(NSCoder *)aDecoder;
    
    
    + (UIUserInterfaceLayoutDirection)userInterfaceLayoutDirectionForSemanticContentAttribute:(UISemanticContentAttribute)attribute NS_AVAILABLE_IOS(9_0);
    
    + (UIUserInterfaceLayoutDirection)userInterfaceLayoutDirectionForSemanticContentAttribute:(UISemanticContentAttribute)semanticContentAttribute relativeToLayoutDirection:(UIUserInterfaceLayoutDirection)layoutDirection NS_AVAILABLE_IOS(10_0);
    
    
    
    
    
    

    4: 分类(UIViewGeometry)

    @interface UIView(UIViewGeometry)
    
    //视图在父坐标系中的位置大小
    @property(nonatomic) CGRect            frame;
    
    //视图在子坐标系中的位置和大小
    @property(nonatomic) CGRect            bounds;
    
    //视图的中心点
    @property(nonatomic) CGPoint           center;
    
    //默认是CGAffineTransformIdentity
    @property(nonatomic) CGAffineTransform transform;
    
    //
    @property(nonatomic) CGFloat           contentScaleFactor;
    
    //视图是否可以连续点击(默认为NO)
    @property(nonatomic,getter=isMultipleTouchEnabled) BOOL multipleTouchEnabled;
    
    //视图是否专门处理触摸事件(YES:视图将阻止触摸事件传递到同一窗口中的其他视图上; 默认为NO)
    @property(nonatomic,getter=isExclusiveTouch) BOOL       exclusiveTouch;
    
    
    
    //
    - (nullable UIView *)hitTest:(CGPoint)point withEvent:(nullable UIEvent *)event;
    
    //
    - (BOOL)pointInside:(CGPoint)point withEvent:(nullable UIEvent *)event;
    
    //计算  源  上的   被操作对象  相对于  目标  的frame
    - (CGPoint)convertPoint:(CGPoint)point toView:(nullable UIView *)view;
    
    //计算  源  上的   被操作对象  相对于  目标  的frame
    - (CGPoint)convertPoint:(CGPoint)point fromView:(nullable UIView *)view;
    
    //计算  源  上的   被操作对象  相对于  目标  的frame
    //参数1: 被操作对象
    //参数2: 目标对象
    //返回: frame
    //备注: 调用者是  源
    - (CGRect)convertRect:(CGRect)rect toView:(nullable UIView *)view;
    
    //计算  源  上的   被操作对象  相对于  目标  的frame
    //参数1: 被操作对象
    //参数2: 源
    //返回: frame
    //备注: 调用者是 目标对象
    - (CGRect)convertRect:(CGRect)rect fromView:(nullable UIView *)view;
    
    备注: 上面两个方法可分为三部分: 源, 目标, 被操作的对象
    fromView后面接的参数是:      源
    toView后面接的参数是:        目标
    converRect后面接的参数永远是: 被操作的对象;
    作用: 计算 源 上的 被操作对象 相对于 目标 的frame
    
    例1: 
    [viewB converRect:viewC.frame toView:viewA];
    目标:        viewA
    被操作对象:   viewC
    源:          viewB
    作用: 计算 viewB 上的 viewC 相对于 viewA 的frame
    
    例2:
    [viewC converRect:viewB.frame fromeView:viewA];
    目标:         viewC
    被操作对象:    viewB
    源:           viewA
    作用: 计算 viewA 上的 viewB 相对于 viewC 的frame
    
    //
    @property(nonatomic) BOOL               autoresizesSubviews;
    
    //
    @property(nonatomic) UIViewAutoresizing autoresizingMask;
    
    //
    - (CGSize)sizeThatFits:(CGSize)size;
    
    //
    - (void)sizeToFit; 
    
    @end
    
    

    5: 分类(UIViewHierarchy)

    @interface UIView(UIViewHierarchy)
    
    //父视图
    @property(nullable, nonatomic,readonly) UIView       *superview;
    
    //子视图
    @property(nonatomic,readonly,copy) NSArray<__kindof UIView *> *subviews;
    
    //
    @property(nullable, nonatomic,readonly) UIWindow     *window;
    
    //将视图从父视图中移除
    - (void)removeFromSuperview;
    //在指定的索引处插入子视图
    //参数1: 要插入的视图
    //参数2: 索引值
    - (void)insertSubview:(UIView *)view atIndex:(NSInteger)index;
    //在指定的索引上交换子视图
    //参数1: 第一个子视图的索引
    //参数2: 第二个子视图的索引
    - (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2;
       
    
    //将视图添加到父视图上
    - (void)addSubview:(UIView *)view;
    //在另一个视图下面插入一个视图
    //参数1:要插入的视图(可理解为: 子视图)
    //参数2: 插入视图之下的视图(可理解为: 父视图)
    - (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview;
    //在另一个视图之上插入一个视图
    //参数1: 要插入的视图(可理解为:父视图)
    //参数2: 插入视图之上的视图(可理解为:子视图)
    - (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview;
    
    
    //将视图放在最顶端
    //参数1:要移动到最顶端的视图
    - (void)bringSubviewToFront:(UIView *)view;
    //将视图移动到最底端
    //参数1:要移动到最底端的视图
    - (void)sendSubviewToBack:(UIView *)view;
    
    
    //告诉视图添加了子视图。(这个方法的默认实现是什么也不做。)
    //参数1: 作为子视图添加的视图
    - (void)didAddSubview:(UIView *)subview;
    //告诉视图子视图即将被删除。(这个方法的默认实现什么也不做。)
    //参数1: 将被删除的子视图
    - (void)willRemoveSubview:(UIView *)subview;
    
    
    //告诉视图它的父视图将更改为指定的父视图。(这个方法的默认实现什么也不做。)
    //参数1: 新的父视图
    - (void)willMoveToSuperview:(nullable UIView *)newSuperview;
    //告诉视图它的父视图改变了。(这个方法的默认实现什么也不做。)
    - (void)didMoveToSuperview;
    //
    - (void)willMoveToWindow:(nullable UIWindow *)newWindow;
    
    
    
    
    
    
    
    

    参考: https://www.jianshu.com/p/103d6aac84b4

    相关文章

      网友评论

        本文标题:iOS UIView

        本文链接:https://www.haomeiwen.com/subject/wgjozftx.html