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
网友评论