UIView方法大全

/** 获取到事件中点击的视图 用来判断当前点击 */

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{

    /** 获取事件event中的触发视图 */

    UIView *hitView = [super hitTest:point withEvent:event];

    /** 判断是否当前视图 */

    if (hitView == self) {

        return nil;

    } else {

        return hitView;

    }

}


/** 判断是否是当前视图触发的事件 */

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{

    return [super pointInside:point withEvent:event];

}


/** 将一个坐标点转换成指定view的坐标 */

- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view{

    return [super convertPoint:point toView:view];

}


/** 将一个坐标点转换成当前view的坐标 */

- (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view{

    return [super convertPoint:point fromView:view];

}


/** 将一个CGRect转换成指定viewCGRect */

- (CGRect)convertRect:(CGRect)rect toView:(UIView *)view{

    return [super convertRect:rect toView:view];

}


/** 讲一个CGRect转换成当前viewCGRect */

- (CGRect)convertRect:(CGRect)rect fromView:(UIView *)view{

    return [super convertRect:rect fromView:view];

}


/** 获取适合label内容的CGSize */

- (CGSize)sizeThatFits:(CGSize)size{

    return [super sizeThatFits:size];

}


/** 自动设置适合内容的CGSize */

- (void)sizeToFit{

    [super sizeToFit];

}


/** 从父视图中移除当前视图 */

- (void)removeFromSuperview{

    [super removeFromSuperview];

}


/** index层插入一个视图 */

- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index{

    [super insertSubview:view atIndex:index];

}


/** 交换两个视图的图层 */

- (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2{

    [super exchangeSubviewAtIndex:index1 withSubviewAtIndex:index2];

}


/** 加入一个视图在最上一层 */

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

    [super addSubview:view];

}


/** siblingSubview视图下面插入一个视图 */

- (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview{

    [super insertSubview:view belowSubview:siblingSubview];

}


/** siblingSubview视图上面插入一个视图 */

- (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview{

    [super insertSubview:view aboveSubview:siblingSubview];

}


/** 将一个视图放到最上一层 */

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

    [super bringSubviewToFront:view];

}


/** 将一个视图推送到最下层 */

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

    [super sendSubviewToBack:view];

}


/** 添加子视图时调用 */

- (void)didAddSubview:(UIView *)subview;{

    [super didAddSubview:subview];

    NSLog(@"添加子视图");

}


/** 将要移除子视图时调用 */

- (void)willRemoveSubview:(UIView *)subview{

    [super willRemoveSubview:subview];

    NSLog(@"移除子视图");

}


/** 父视图将要发生更改时调用 */

- (void)willMoveToSuperview:(UIView *)newSuperview{

    [super willMoveToSuperview:newSuperview];

    NSLog(@"父视图将要发生更改");

}


/** 父视图更改时调用 */

- (void)didMoveToSuperview{

    [super didMoveToSuperview];

    NSLog(@"父视图发生更改");

}


/** 视图或其超视图将要展示到窗口调用 */

- (void)willMoveToWindow:(UIWindow *)newWindow{

    [super willMoveToWindow:newWindow];

    NSLog(@"视图展示到窗口");

}


/** 视图或其超视图展示到窗口调用 */

- (void)didMoveToWindow{

    [super didMoveToSuperview];

    NSLog(@"视图或其超视图展示到窗口");

}


/** 判断当前视图是否是指定视图或者其子视图 */

- (BOOL)isDescendantOfView:(UIView *)view{

    return [super isDescendantOfView:view];

}


/** 获取当前视图内指定tag值的视图 */

- (UIView *)viewWithTag:(NSInteger)tag{

    return [super viewWithTag:tag];

}


/** 在图层绘制时调用的方法 */

- (void)setNeedsLayout{

    

}

- (void)layoutIfNeeded{

    

}


/** 当视图上的图层发生改变时调用 */

- (void)layoutSubviews{

    

}


/** 发生自动布局时调用 */

- (void)layoutMarginsDidChange{

    

}


/** 绘制图层layer时调用 */

- (void)drawRect:(CGRect)rect{

    

}


/** 重绘图层 */

- (void)setNeedsDisplay{

    

}


/** 重绘图层指定范围 */

- (void)setNeedsDisplayInRect:(CGRect)rect{

   

}


/** tintColor 是一种有抛光效果的设置视图颜色 */

/** tintColor改变时调用 */

- (void)tintColorDidChange{

    

}


#pragma mark - 动画相关

/** 开启动画块 animationID动画标示 context参数 */

+ (void)beginAnimations:(NSString *)animationID context:(void *)context{

    [super beginAnimations:animationID context:context];

}


/** 提交动画块 动画开始执行 */

+ (void)commitAnimations{

    [super commitAnimations];

}


/** 设置动画代理 */

+ (void)setAnimationDelegate:(id)delegate{

    [super setAnimationDelegate:delegate];

}


/** 当动画开始时 发送一个消息给动画代理 */

+ (void)setAnimationWillStartSelector:(SEL)selector{

    [super setAnimationWillStartSelector:selector];

    /** 动画代理执行selector方法 */

}


/** 当动画结束时 发送一个消息给动画代理 */

+ (void)setAnimationDidStopSelector:(SEL)selector{

    [super setAnimationDidStopSelector:selector];

    /** 动画代理执行selector方法 */

}


/** 设置动画时长 默认0.2s */

+ (void)setAnimationDuration:(NSTimeInterval)duration{

    [super setAnimationDuration:duration];

}


/** 设置动画执行延迟时长 默认0s */

+ (void)setAnimationDelay:(NSTimeInterval)delay{

    [super setAnimationDelay:delay];

}


/** 设置动画开始时间NSDate */

+ (void)setAnimationStartDate:(NSDate *)startDate{

    [super setAnimationStartDate:startDate];

}


/** 设置动画的曲线方式(就是动画的总体变化的时间曲线:开始快最后慢,开始慢最后快,最后慢,均匀线性)。

 

    curve参数如下:

 

    typedef NS_ENUM(NSInteger, UIViewAnimationCurve) {

    UIViewAnimationCurveEaseInOut,         // slow at beginning and end

    UIViewAnimationCurveEaseIn,            // slow at beginning

    UIViewAnimationCurveEaseOut,           // slow at end

    UIViewAnimationCurveLinear

    }; 

 */

+ (void)setAnimationCurve:(UIViewAnimationCurve)curve{

    [super setAnimationCurve:curve];

}


/** 设置动画重复次数 */

+ (void)setAnimationRepeatCount:(float)repeatCount{

    [super setAnimationRepeatCount:repeatCount];

}


/**  

    设置动画是否做一次反向的执行。

    如果设置为YES:动画将执行:动画初始状态》动画》动画完成状态》动画》动画初始状态。

    如果设置为NO:默认值 

 */

+ (void)setAnimationRepeatAutoreverses:(BOOL)repeatAutoreverses{

    [super setAnimationRepeatAutoreverses:repeatAutoreverses];

}


/** 设置动画开始时状态

 YES时:当上一次动画正在执行中,那么当下一个动画开始时,上一次动画的当前状态将成为下一次动画的开始状态。

 NO时:当上一个动画正在执行中,那么当下一个动画开始时,上一次动画需要先恢复到完成时的状态,然后在开始执行下一次动画。

 */

+ (void)setAnimationBeginsFromCurrentState:(BOOL)fromCurrentState{

    

}


/** 添加动画到视图view transition动画样式 cacheYES 高效 但动画执行过程中不能更新UI NO 每一帧都可以重新绘制 可以实时更新UI */

+ (void)setAnimationTransition:(UIViewAnimationTransition)transition forView:(UIView *)view cache:(BOOL)cache{

    

}


/** 是否支持动画 默认YES */

+ (void)setAnimationsEnabled:(BOOL)enabled{

    

}


/** 返回动画效果是否被禁用 */

+ (BOOL)areAnimationsEnabled{

    return [super areAnimationsEnabled];

}


/** 强制一些动作不使用动画 我也不懂 测出来再补上 */

+ (void)performWithoutAnimation:(void (^)(void))actionsWithoutAnimation{

    

}


#pragma mark - 动画Block

/**

 duration   执行时长

 delay      延迟时长

 options    动画执行曲线

 animations 动画动作Block

 completion 动画执行完毕后执行的Block

 */

+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion {

    

}


/**

 duration   执行时长

 animations 动画动作Block

 completion 动画执行完毕后执行的Block

 */

+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion {

    

}


/** 

 duration   执行时长

 animations 动画动作Block

 */

+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations {

    

}


/** 

 SpringAnimation动画 干净 快速

 usingSpringWithDamping 0~1 弹簧效果 越小弹簧效果越明显 

 initialSpringVelocity  初始速度 初始速度取值较高而时间较短时 也会出现弹簧效果

 */

+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay usingSpringWithDamping:(CGFloat)dampingRatio initialSpringVelocity:(CGFloat)velocity options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion {

    

}


/** 

 过场动画

 duration   动画时长

 view       进行转场动画的视图

 options    专场动画类型

 animations 执行动画

 completion 动画结束后调用的Block

 */

+ (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion {

    

}


/**

 过场动画

 [fromView.superview addSubview:toView];

 [fromView.superview removeFromSuperview];

 */

+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^)(BOOL finished))completion {

    

}


/**

 在一组视图上执行指定的系统动画,并可以并行自定义的动画

 parallelAnimations就是与系统动画并行的自定义动画

 */

+ (void)performSystemAnimation:(UISystemAnimation)animation onViews:(NSArray *)views options:(UIViewAnimationOptions)options animations:(void (^)(void))parallelAnimations completion:(void (^)(BOOL finished))completion {

    

}


#pragma mark - UIViewKeyframeAnimations

/** 

 关键帧动画

 duration   动画时长

 delay      动画延迟

 options    动画效果选项

 animations 动画执行代码

 completion 动画结束执行代码

 */

+ (void)animateKeyframesWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewKeyframeAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion {

    

}


/**

 frameStartTime 动画相对开始时间

 frameDuration  动画相对持续时间

 自身会根据动画总持续时长自动匹配其运行时长

 */

+ (void)addKeyframeWithRelativeStartTime:(double)frameStartTime relativeDuration:(double)frameDuration animations:(void (^)(void))animations {

    

}


#pragma mark - 手势

/** 添加手势 */

- (void)addGestureRecognizer:(UIGestureRecognizer*)gestureRecognizer {

    

}


/** 移除手势 */

- (void)removeGestureRecognizer:(UIGestureRecognizer*)gestureRecognizer {

    

}


/** 是否执行该手势 */

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {

    return YES;

}


/** 添加运动拟真效果 */

/** UIMotionEffect 运动拟真效果类 物理效果 */

- (void)addMotionEffect:(UIMotionEffect *)effect {

    

}

/** 移除运动拟真效果 */

- (void)removeMotionEffect:(UIMotionEffect *)effect {

    

}


#pragma mark - 约束 自动布局

/** 只知道是自动布局相关 但是具体效果 未知 查不到 测不出== */

- (NSArray *)constraints {

    return [super constraints];

}


/** 添加约束 需要先开启自动布局 */

- (void)addConstraint:(NSLayoutConstraint *)constraint {

    

}


/** 添加约束 */

- (void)addConstraints:(NSArray *)constraints {

    

}


/** 移除约束 */

- (void)removeConstraint:(NSLayoutConstraint *)constraint {

    

}


/** 移除约束 */

- (void)removeConstraints:(NSArray *)constraints {

    

}


/** 更新视图和其子视图的约束 */

- (void)updateConstraintsIfNeeded {

    

}


/** 更新视图和其子视图的约束 */

- (void)updateConstraints {

    

}


/** 是否更新视图的约束 */

- (BOOL)needsUpdateConstraints {

    return [super needsUpdateConstraints];

}


/** 设置视图的约束需要更新 */

- (void)setNeedsUpdateConstraints {

    

}


/** 是否关闭自动布局 */

- (BOOL)translatesAutoresizingMaskIntoConstraints {

    return [super translatesAutoresizingMaskIntoConstraints];

}


/** 是否关闭自动布局 */

- (void)setTranslatesAutoresizingMaskIntoConstraints:(BOOL)flag {

    

}


/** 是否支持自动布局 */

+ (BOOL)requiresConstraintBasedLayout {

    return [super requiresConstraintBasedLayout];

}


/** 返回给定框架的视图的对齐矩阵 */

- (CGRect)alignmentRectForFrame:(CGRect)frame {

    return [super alignmentRectForFrame:frame];

}


/** 返回给定对齐矩形的视图的frame  */

- (CGRect)frameForAlignmentRect:(CGRect)alignmentRect {

    return [super frameForAlignmentRect:alignmentRect];

}


/** 对当前View设置用来布局的矩形 设置偏移 */

- (UIEdgeInsets)alignmentRectInsets {

    return [super alignmentRectInsets];

}


/** 默认返回当前视图的底部作为baseline。我们可以重写上述方法,但必须返回的是当前视图中的子视图 */

- (UIView *)viewForBaselineLayout {

    return [super viewForBaselineLayout];

}


/** 通过重写intrinsicContentSize可以设置当前视图显示特定内容时的大小 */

- (CGSize)intrinsicContentSize {

    CGSize size = [super intrinsicContentSize];

    if (self.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClassCompact) {

        size.width += 4.0f;

    } else {

        size.width += 40.0f;

    }

    

    if (self.traitCollection.verticalSizeClass == UIUserInterfaceSizeClassCompact) {

        size.height += 4.0;

    } else {

        size.height += 40.0;

    }

    

    return size;

}


/** 视图根据内部内容设置Size */

- (void)invalidateIntrinsicContentSize {

    [super invalidateIntrinsicContentSize];

}


- (UILayoutPriority)contentHuggingPriorityForAxis:(UILayoutConstraintAxis)axis {

    return [super contentHuggingPriorityForAxis:axis];

}


/** 使其在内容大小的基础上不能继续变大 */

- (void)setContentHuggingPriority:(UILayoutPriority)priority forAxis:(UILayoutConstraintAxis)axis {

    

}



- (UILayoutPriority)contentCompressionResistancePriorityForAxis:(UILayoutConstraintAxis)axis {

    return [super contentCompressionResistancePriorityForAxis:axis];

}


/** 使其在在其内容大小的基础上不能继续变小 */

- (void)setContentCompressionResistancePriority:(UILayoutPriority)priority forAxis:(UILayoutConstraintAxis)axis {

    

}


/** 动态计算控件的Size targetSize可传参数:UILayoutFittingCompressedSize最小情况下可能的Size UILayoutFittingExpandedSize最大情况下可能的Size */

- (CGSize)systemLayoutSizeFittingSize:(CGSize)targetSize {

    return [super systemLayoutSizeFittingSize:targetSize];

}


/** 动态计算控件的Size UILayoutPriority 优先级 

    horizontalFittingPriority   水平约束优先级

    verticalFittingPriority     垂直约束优先级 */

- (CGSize)systemLayoutSizeFittingSize:(CGSize)targetSize withHorizontalFittingPriority:(UILayoutPriority)horizontalFittingPriority verticalFittingPriority:(UILayoutPriority)verticalFittingPriority {

    return [super systemLayoutSizeFittingSize:targetSize withHorizontalFittingPriority:horizontalFittingPriority verticalFittingPriority:verticalFittingPriority];

}


/** 约束检查 为什么这个View 这样显 返回值 约束条件 */

- (NSArray *)constraintsAffectingLayoutForAxis:(UILayoutConstraintAxis)axis {

    return [super constraintsAffectingLayoutForAxis:axis];

}


/** 判断当前的自动布局约束 是否还有其他满足约束的条件 */

- (BOOL)hasAmbiguousLayout {

    return [super hasAmbiguousLayout];

}


/** 随机实现一个满足约束的条件 */

- (void)exerciseAmbiguityInLayout {

    

}


#pragma mark - NSCoder

/** 归档时编码 */

- (void) encodeRestorableStateWithCoder:(NSCoder *)coder {

    

}


/** 反归档时解码 */

- (void) decodeRestorableStateWithCoder:(NSCoder *)coder {

    

}


/** 复制一个复合视图

    afterUpdates    是否视图展示时才生成视图

    No              会立即生成快照,并不会调用重新设置颜色的方法 无色

    YES             当调用这个视图时生成

 */

- (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates {

    return [super snapshotViewAfterScreenUpdates:afterUpdates];

}


/** 复制一个指定范围偏移量的复合视图 */

- (UIView *)resizableSnapshotViewFromRect:(CGRect)rect afterScreenUpdates:(BOOL)afterUpdates withCapInsets:(UIEdgeInsets)capInsets {

    return [super resizableSnapshotViewFromRect:rect afterScreenUpdates:YES withCapInsets:capInsets];

}


/** 将指定范围的视图 绘制到图形上下文中 */

- (BOOL)drawViewHierarchyInRect:(CGRect)rect afterScreenUpdates:(BOOL)afterUpdates {

    return [super drawViewHierarchyInRect:rect afterScreenUpdates:afterUpdates];

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值