UIVIew的使用大全

来源:互联网 发布:阿里云授权服务中心 编辑:程序博客网 时间:2024/04/25 09:20

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

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

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

    UIView *hitView = [superhitTest:pointwithEvent:event];

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

    if (hitView ==self) {

        returnnil;

    } else {

        return hitView;

    }

}


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

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

    return [superpointInside:point withEvent:event];

}


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

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

    return [superconvertPoint:point toView:view];

}


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

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

    return [superconvertPoint:point fromView:view];

}


/** 将一个CGRect转换成指定view的CGRect */

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

    return [superconvertRect:rect toView:view];

}


/** 讲一个CGRect转换成当前view的CGRect */

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

    return [superconvertRect:rect fromView:view];

}


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

- (CGSize)sizeThatFits:(CGSize)size{

    return [supersizeThatFits:size];

}


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

- (void)sizeToFit{

    [supersizeToFit];

}


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

- (void)removeFromSuperview{

    [superremoveFromSuperview];

}


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

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

    [superinsertSubview:view atIndex:index];

}


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

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

    [superexchangeSubviewAtIndex:index1 withSubviewAtIndex:index2];

}


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

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

    [superaddSubview:view];

}


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

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

    [superinsertSubview:view belowSubview:siblingSubview];

}


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

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

    [superinsertSubview:view aboveSubview:siblingSubview];

}


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

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

    [superbringSubviewToFront:view];

}


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

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

    [supersendSubviewToBack:view];

}


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

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

    [superdidAddSubview:subview];

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

}


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

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

    [superwillRemoveSubview:subview];

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

}


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

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

    [superwillMoveToSuperview:newSuperview];

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

}


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

- (void)didMoveToSuperview{

    [superdidMoveToSuperview];

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

}


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

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

    [superwillMoveToWindow:newWindow];

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

}


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

- (void)didMoveToWindow{

    [superdidMoveToSuperview];

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

}


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

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

    return [superisDescendantOfView:view];

}


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

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

    return [superviewWithTag: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{

    [superbeginAnimations:animationID context:context];

}


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

+ (void)commitAnimations{

    [supercommitAnimations];

}


/** 设置动画代理 */

+ (void)setAnimationDelegate:(id)delegate{

    [supersetAnimationDelegate:delegate];

}


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

+ (void)setAnimationWillStartSelector:(SEL)selector{

    [supersetAnimationWillStartSelector:selector];

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

}


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

+ (void)setAnimationDidStopSelector:(SEL)selector{

    [supersetAnimationDidStopSelector:selector];

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

}


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

+ (void)setAnimationDuration:(NSTimeInterval)duration{

    [supersetAnimationDuration:duration];

}


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

+ (void)setAnimationDelay:(NSTimeInterval)delay{

    [supersetAnimationDelay:delay];

}


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

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

    [supersetAnimationStartDate: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{

    [supersetAnimationCurve:curve];

}


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

+ (void)setAnimationRepeatCount:(float)repeatCount{

    [supersetAnimationRepeatCount:repeatCount];

}


/**  

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

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

    如果设置为NO:默认值 

 */

+ (void)setAnimationRepeatAutoreverses:(BOOL)repeatAutoreverses{

    [supersetAnimationRepeatAutoreverses:repeatAutoreverses];

}


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

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

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

 */

+ (void)setAnimationBeginsFromCurrentState:(BOOL)fromCurrentState{

    

}


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

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

    

}


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

+ (void)setAnimationsEnabled:(BOOL)enabled{

    

}


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

+ (BOOL)areAnimationsEnabled{

    return [superareAnimationsEnabled];

}


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

+ (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 {

    returnYES;

}


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

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

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

    

}

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

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

    

}


#pragma mark - 约束自动布局

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

- (NSArray *)constraints {

    return [superconstraints];

}


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

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

    

}


/** 添加约束 */

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

    

}


/** 移除约束 */

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

    

}


/** 移除约束 */

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

    

}


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

- (void)updateConstraintsIfNeeded {

    

}


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

- (void)updateConstraints {

    

}


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

- (BOOL)needsUpdateConstraints {

    return [superneedsUpdateConstraints];

}


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

- (void)setNeedsUpdateConstraints {

    

}


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

- (BOOL)translatesAutoresizingMaskIntoConstraints {

    return [supertranslatesAutoresizingMaskIntoConstraints];

}


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

- (void)setTranslatesAutoresizingMaskIntoConstraints:(BOOL)flag {

    

}


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

+ (BOOL)requiresConstraintBasedLayout {

    return [superrequiresConstraintBasedLayout];

}


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

- (CGRect)alignmentRectForFrame:(CGRect)frame {

    return [superalignmentRectForFrame:frame];

}


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

- (CGRect)frameForAlignmentRect:(CGRect)alignmentRect {

    return [superframeForAlignmentRect:alignmentRect];

}


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

- (UIEdgeInsets)alignmentRectInsets {

    return [superalignmentRectInsets];

}


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

- (UIView *)viewForBaselineLayout {

    return [superviewForBaselineLayout];

}


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

- (CGSize)intrinsicContentSize {

    CGSize size = [superintrinsicContentSize];

    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 {

    [superinvalidateIntrinsicContentSize];

}


- (UILayoutPriority)contentHuggingPriorityForAxis:(UILayoutConstraintAxis)axis {

    return [supercontentHuggingPriorityForAxis:axis];

}


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

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

    

}



- (UILayoutPriority)contentCompressionResistancePriorityForAxis:(UILayoutConstraintAxis)axis {

    return [supercontentCompressionResistancePriorityForAxis:axis];

}


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

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

    

}


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

- (CGSize)systemLayoutSizeFittingSize:(CGSize)targetSize {

    return [supersystemLayoutSizeFittingSize:targetSize];

}


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

    horizontalFittingPriority   水平约束优先级

    verticalFittingPriority     垂直约束优先级 */

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

    return[supersystemLayoutSizeFittingSize:targetSizewithHorizontalFittingPriority:horizontalFittingPriorityverticalFittingPriority:verticalFittingPriority];

}


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

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

    return [superconstraintsAffectingLayoutForAxis:axis];

}


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

- (BOOL)hasAmbiguousLayout {

    return [superhasAmbiguousLayout];

}


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

- (void)exerciseAmbiguityInLayout {

    

}


#pragma mark - NSCoder

/** 归档时编码 */

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

    

}


/** 反归档时解码 */

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

    

}


/** 复制一个复合视图

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

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

    YES             当调用这个视图时生成

 */

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

    return [supersnapshotViewAfterScreenUpdates:afterUpdates];

}


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

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

    return[superresizableSnapshotViewFromRect:rectafterScreenUpdates:YESwithCapInsets:capInsets];

}


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

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

    return [superdrawViewHierarchyInRect:rect afterScreenUpdates:afterUpdates];

}

0 0
原创粉丝点击