常看Objective C开发iOS基础技术

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

2015-11-26  本文已影响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中
上一篇下一篇

猜你喜欢

热点阅读