美文网首页常看Objective C开发iOS基础技术
UIView 属性解析大全(呕心沥血)

UIView 属性解析大全(呕心沥血)

作者: 方克己 | 来源:发表于2015-11-26 15:52 被阅读2714次
    autoresizingMask
    自动调整子控件与父控件中间的位置,宽高                                 
     UIViewAutoresizingNone就是不自动调整。
    UIViewAutoresizingFlexibleLeftMargin 自动调整与superView左边的距离,保证与superView右边的距离不变。
    UIViewAutoresizingFlexibleRightMargin 自动调整与superView的右边距离,保证与superView左边的距离不变。
    UIViewAutoresizingFlexibleTopMargin 自动调整与superView顶部的距离,保证与superView底部的距离不变。
    UIViewAutoresizingFlexibleBottomMargin 自动调整与superView底部的距离,也就是说,与superView顶部的距离不变。
    UIViewAutoresizingFlexibleWidth 自动调整自己的宽度,保证与superView左边和右边的距离不变。
    UIViewAutoresizingFlexibleHeight 自动调整自己的高度,保证与superView顶部和底部的距离不变。
    例:UIViewAutoresizingFlexibleLeftMargin 
     |UIViewAutoresizingFlexibleRightMargin 
    自动调整与superView左边的距离,保证与左边的距离和右边的距离和原来距左边和右边的距离的比例不变。
    比如原来距离为20,30,调整后的距离应为68,102,即68/20=102/30。
    
    autoresizesSubviews
    自动尺寸调整(autoresizesSubviews属性声明被设置为YES,
    则其子视图会根据autoresizingMask属性的值自动进行尺寸调整。
    简单配置一下视图的自动尺寸调整掩码常常就能使应用程序得到合适的行为;否则,
    应用程序就必须通过重载layoutSubviews方法来提供自己的实现。)
    
    sizeThatFits
    计算并返回的大小最适合它的子视图的视图。(让视图计算最适合子视图的大小,即能把全部子视图显示出来所需要的最小的size)
    
    sizeToFit
    得到最适合当前包含它子视图的尺寸(根据子视图的大小位置,调整视图,使其恰好围绕子视图,也就是说自动适应子视图的大小,只显示子视图)
    
    frame
    在父视图位置(参照点是,父view坐标系统)
    
    bounds
    该view在本地坐标系统中的位置和大小(参照点是,本地坐标系统)
    
    center
    frame中的中心点(决定当前视图是否是处理触摸事件的唯一对象)
    
    小属性
    hidden 隐藏视图
    alpha  透明度(0~1)
    opaque 不透明度 (0~1)
    userInteractionEnabled 交互
    multipleTouchEnabled  支持多点触控
    exclusiveTouch            决定当前视图是否处理出门事件的唯一对象
    
    clearsContextBeforeDrawing
    决定在视图重画之前是否先清理视图以前的内容,缺省值为YES
    如果你把这个属性设为NO,那么你要保证能在 drawRect:方法中正确的绘画。如果你的代码
    已经做了大量优化,那么设为NO可以提高性能,尤其是在滚动时可能只需要重新绘画视图的一部分
    
    clipsToBounds
    决定子视图是否被限定在当前视图的bounds中,缺省值为NO
    
    ContentScaleFactor
    应用到当前视图的比例Scale
    
    gestureRecognizers
    当前视图所附加的手势识别器
    
    layer
    用于视图渲染的核心动画层
    
    motionEffects
    当前视图的运动效果(当前视图的运动效果,IOS7才开始拥有)
    
    restorationIdentifier
    该标示符决定该视图是否支持恢复状态,其实也只是个标示符而已个人觉得就相当于配置表视图每个单元格时使用的标示符一样,可以直接在内存中重用,提高了性能还有一点需注意,不应该简单的定义这个标示符,因为其所属的view controller ,还有view controller的所有 父view controllers都必须有一个恢复标识符
    
    subviews                      当前视图的所有子视图
    superview                     当前视图的父视图
    tag                           当前视图标签
    tintAdjustmentMode            色调调整模式,开始用于iOS7
    transform                     视图仿射变换
    userInteractionEnabled 决定与用户交互事件是否从被忽略并从事件队列中移除
    windows                        当前视图上的UIWindow
    
    UIViewContentModel
        UIViewContentModeScaleToFill,       缩放内容到合适比例大小
        UIViewContentModeScaleAspectFit,    缩放内容到合适的大小,边界多余部分透明
        UIViewContentModeScaleAspectFill,   缩放内容填充到指定大小,边界多余的部分省略
        UIViewContentModeRedraw,        重绘视图边界
        UIViewContentModeCenter,        视图保持等比缩放
        UIViewContentModeTop,           视图顶部对齐
        UIViewContentModeBottom,        视图底部对齐
        UIViewContentModeLeft,          视图左侧对齐
        UIViewContentModeRight,         视图右侧对齐
        UIViewContentModeTopLeft,       视图左上角对齐
        UIViewContentModeTopRight,      视图右上角对齐
        UIViewContentModeBottomLeft,    视图左下角对齐
        UIViewContentModeBottomRight,   视图右下角对齐
    
    编辑结束/开始 视图中的编辑状态(一般用作于收键盘)
     (BOOL)endEditing:(BOOL)force  
    
    关于响应
    - (void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
    为视图添加一个手势识别器
    - (void)removeGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
    移除一个手势识别器
    - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
    开始一个手势识别器
    - (void)addMotionEffect:(UIMotionEffect *)effect
    开始向视图中添加运动效果,这么说其实比较模糊,比如说警告框会随着手机的倾斜而倾斜,
       当然这需要代码实现,只是我们现在可以检测手机的运动事件来做出相应的响应—从IOS7开始使用
    
    管理视图层次
    - (void)addSubview:(UIView *)view   添加子视图
    - (void)removeFromSuperview         从父视图中移除
    - (void)bringSubviewToFront:(UIView *)view  移动指定的子视图到最顶层
    - (void)sendSubviewToBack:(UIView *)view  移动制定的子视图到后方,所有子视图的下面
    - (void)insertSubview:(UIView *)view atIndex:(NSInteger)index  在指定的位置插入子视图,视图的所有视图其实组成了一个数组
    - (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview  将指定的子视图移动到指定siblingSubview子视图的前面
    - (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview  将指定的子视图移动到指定siblingSubview子视图的后面
    - (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2  交换两子视图的位置
    - (BOOL)isDescendantOfView:(UIView *)view  判断接收对象是否是指定视图的子视图,或与指定视图是同一视图
    
    选择加入基于约束的布局( Opting in to Constraint-Based Layout)
    - (void)setTranslatesAutoresizingMaskIntoConstraints:(BOOL)flag  设置视图自动调整尺寸的掩码是否转化为基于约束布局的约束
    - (BOOL)translatesAutoresizingMaskIntoConstraints 判断视图是否将自动调整尺寸的掩码是否转化为基于约束布局的约束
    
    管理约束
    - (NSArray *)constraints   返回由视图创建的约束
    - (void)addConstraint:(NSLayoutConstraint *)constraint 为视图布局或者子视图添加一个约束,constraint约束只能在当前视图范围内,包括子视图
    - (void)addConstraints:(NSArray *)constraints 添加一组约束
    - (void)removeConstraint:(NSLayoutConstraint *)constraint 移除视图上指定的约束
    - (void)removeConstraints:(NSArray *)constraints 移除指定的一组约束
    
    在基于约束布局的测量 (Measuring in Constraint-Based Layout)
    - (CGSize)systemLayoutSizeFittingSize:(CGSize)targetSize 返回满足持有约束的视图的size
    - (CGSize)intrinsicContentSize 返回接收对象的原本大小
    - (void)invalidateIntrinsicContentSize 废除视图原本内容的size
    - (UILayoutPriority)contentCompressionResistancePriorityForAxis:(UILayoutConstraintAxis)axis 设置当视图要变小时,视图的压缩改变方式,是水平缩小还是垂直缩小,并返回一个优先权
    - (void)setContentCompressionResistancePriority:(UILayoutPriority)priority forAxis:(UILayoutConstraintAxis)axis 设置优先权
    - (UILayoutPriority)contentHuggingPriorityForAxis:(UILayoutConstraintAxis)axis 与上边相反是视图的放大改变方式
    - (void)setContentHuggingPriority:(UILayoutPriority)priority forAxis:(UILayoutConstraintAxis)axis
    
    校准视图 (Aligning Views with Constraint-Based Layout)
    - (CGRect)alignmentRectForFrame:(CGRect)frame 返回给定框架的视图的对齐矩阵
    - (CGRect)frameForAlignmentRect:(CGRect)alignmentRect 返回给定对齐矩形的视图的frame
    - (UIEdgeInsets)alignmentRectInsets 返回从视图的frame上定义的对齐矩阵的边框 
    - (UIView *)viewForBaselineLayout 返回满足基线约束条件的视图
    
    触发基于约束的布局 (Triggering Constraint-Based Layout)
    - (BOOL)needsUpdateConstraints  视图的约束是否需要更新
    - (void)setNeedsUpdateConstraints   设置视图的约束需要更新
    - (void)updateConstraints   为视图更新约束
    - (void)updateConstraintsIfNeeded   更新视图和其子视图的约束
    
    调试基于约束的布局 (Debugging Constraint-Based Layout)
    - (NSArray *)constraintsAffectingLayoutForAxis:(UILayoutConstraintAxis)axis 返回影响一个给定轴视图布局的约束
    - (BOOL)hasAmbiguousLayout   视图的位置是否不完全指定
    - (void)exerciseAmbiguityInLayout 在不同的有效值之间用一个模糊的布局随机改变视图的frame
    
    绘画和更新视图 (Drawing and Updating the View)
    - (void)drawRect:(CGRect)rect   在指定的区域绘画视图
    - (void)setNeedsDisplay   标记整个视图的边界矩形需要重绘
    - (void)setNeedsDisplayInRect:(CGRect)invalidRect 标记在指定区域内的视图的边界需要重绘
    
    格式化打印视图内容
    - (UIViewPrintFormatter *)viewPrintFormatter  返回视图的打印格式化
    - (void)drawRect:(CGRect)area forViewPrintFormatter:(UIViewPrintFormatter *)formatter 指定区域和打印格式绘画视图内容
    
    保存和恢复状态 (Preserving and Restoring State)
    - (void)encodeRestorableStateWithCoder:(NSCoder *)coder 编码视图的状态信息
    - (void)decodeRestorableStateWithCoder:(NSCoder *)coder 解码一个视图状态信息
    
    转换视图间坐标 (Converting Between View Coordinate Systems)
    - (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view 转换一个点从接受对象的坐标系到指定视图
    - (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view//与上面相反,指定视图坐标中的一个点转换为接收对象
    - (CGRect)convertRect:(CGRect)rect toView:(UIView *)view
    - (CGRect)convertRect:(CGRect)rect fromView:(UIView *)view 参照上面两个方法
    
    视图中的点击测试
    - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
    在指定点上点击测试指定事件
    - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
    测试指定的点是否包含在接收对象中
    
    注意与视图相关联的改变 (Observing View-Related Changes)
    - (void)didAddSubview:(UIView *)subview 通知视图指定子视图已经添加
    - (void)willRemoveSubview:(UIView *)subview 通知视图将要移除指定的子视图
    - (void)willMoveToSuperview:(UIView *)newSuperview 通知视图将要移动到一个新的父视图中
    - (void)didMoveToSuperview 通知视图已经移动到一个新的父视图中
    - (void)willMoveToWindow:(UIWindow *)newWindow 通知视图将要移动到一个新的window中
    - (void)didMoveToWindow 通知视图已经移动到一个新的window中
    

    相关文章

      网友评论

      本文标题:UIView 属性解析大全(呕心沥血)

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