UIView

来源:互联网 发布:java测试工程师技能 编辑:程序博客网 时间:2024/05/16 17:56
UIView简介iOS中的视图组件,所有的控件都需要显示在视图上创建一个视图//在坐标为(10,10)的位置创建一个宽为100高为100的视图CGRect  viewRect = CGRectMake(10, 10, 100, 100);UIView* myView = [[UIView alloc] initWithFrame:viewRect];视图的初始化//便利初始化方法- (instancetype)initWithFrame:(CGRect)aRect配置视图的外观//视图的背景颜色@property(nonatomic, copy) UIColor *backgroundColor//是否隐藏,默认为NO@property(nonatomic, getter=isHidden) BOOL hidden//透明度,0.0-1.0的数值,0为全透明,1为不透明@property(nonatomic) CGFloat alpha//是否透明,默认为YES@property(nonatomic, getter=isOpaque) BOOL opaque//视图控件的颜色@property(nonatomic, retain) UIColor *tintColor//视图的色彩模式@property(nonatomic) UIViewTintAdjustmentMode tintAdjustmentMode枚举值:UIViewTintAdjustmentModeAutomatic,      //自动的UIViewTintAdjustmentModeNormal,         //正常的UIViewTintAdjustmentModeDimmed,         //暗淡的//决定了子视图的显示范围。具体的说,就是当取值为YES时,剪裁超出父视图范围的子视图部分;当取值为NO时,不剪裁子视图。默认值为NO。@property(nonatomic) BOOL clipsToBounds//决定在视图重画之前是否先清理视图以前的内容,缺省值为YES//如果你把这个属性设为NO,那么你要保证能在 drawRect:方法中正确的绘画。如果你的代码//已经做了大量优化,那么设为NO可以提高性能,尤其是在滚动时可能只需要重新绘画视图的一部分@property(nonatomic) BOOL clearsContextBeforeDrawing//模具视图@property(nonatomic, retain) UIView *maskView//类方法,返回类用来创建这一个本类的layer实例对象+ (Class)layerClass返回值:一个用来创建视图layer的类//用于视图渲染的核心动画层@property(nonatomic, readonly, retain) CALayer *layerCALayer 为层对象,详情参见CALayer文档配置相关的行为事件//是否可以与用户交互。默认是YES@property(nonatomic, getter=isUserInteractionEnabled) BOOL userInteractionEnabled//是否支持多点触控.默认是NO@property(nonatomic, getter=isMultipleTouchEnabled) BOOL multipleTouchEnabled//决定当前视图是否是处理触摸事件的唯一对象,默认为NO@property(nonatomic, getter=isExclusiveTouch) BOOL exclusiveTouch按钮边界的配置//当前视图的边界,包括大小和原点,这里是在父视图的坐标系下@property(nonatomic) CGRect frame//当前视图的边界,包括大小和原点,这里是在系统坐标系下@property(nonatomic) CGRect bounds//当前视图的中心,并指定是在父视图的坐标系下@property(nonatomic) CGPoint centerCGPoint 为坐标结构体,包含x和y两个值//视图的仿射变换@property(nonatomic) CGAffineTransform transformCGAffineTransform结构体,有六个值,分别是:CGFloat a, b, c, d;CGFloat tx, ty;视图层次//获取俯视图,只读属性@property(nonatomic, readonly) UIView *superview//当前视图的所有子视图,只读属性@property(nonatomic, readonly, copy) NSArray *subviews//当前视图上的UIWindow对象,只读属性@property(nonatomic, readonly) UIWindow *window//向当前视图上添加子视图- (void)addSubview:(UIView *)view参数:view:View或者View子类对象示例:[view addSubview:button];//把这个View放到最前面- (void)bringSubviewToFront:(UIView *)view//把这个View移动到最后面- (void)sendSubviewToBack:(UIView *)view//从父视图移除- (void)removeFromSuperview//在索引位置插入一个视图- (void)insertSubview:(UIView *)view              atIndex:(NSInteger)index参数:view:要放置的视图index:索引位置,最底层是0示例:[view insertSubview:button atIndex:1];//在某个视图上插入一个视图- (void)insertSubview:(UIView *)view         aboveSubview:(UIView *)siblingSubview参数:view:要放置的视图siblingSubview:某个视图//在某个视图下插入一个视图- (void)insertSubview:(UIView *)view         belowSubview:(UIView *)siblingSubview参数:view:要放置的视图siblingSubview:某个视图示例:[view insertSubview:button belowSubview:view1];//用索引值交换两个视图- (void)exchangeSubviewAtIndex:(NSInteger)index1            withSubviewAtIndex:(NSInteger)index2参数:index1:视图索引值index2:另一个视图索引值//判定一个视图是否在其父视图的视图层中- (BOOL)isDescendantOfView:(UIView *)view调整大小行为//决定当当前视图的父视图大小发生变化时,当前视图该怎么调整自己的size@property(nonatomic) UIViewAutoresizing autoresizingMaskUIViewAutoresizing枚举值:UIViewAutoresizingNone              //视图将不进行自动尺寸调整。UIViewAutoresizingFlexibleHeight    //视图的高度将和父视图的高度一起成比例变化。否则,视图的高度将保持不变UIViewAutoresizingFlexibleWidth     //视图的宽度将和父视图的宽度一起成比例变化。否则,视图的宽度将保持不变UIViewAutoresizingFlexibleLeftMargin//视图的左边界将随着父视图宽度的变化而按比例进行调整。否则,视图和其父视图的左边界的相对位置将保持不变。UIViewAutoresizingFlexibleRightMargin//视图的右边界将随着父视图宽度的变化而按比例进行调整。否则,视图和其父视图的右边界的相对位置将保持不变。UIViewAutoresizingFlexibleBottomMargin//视图的底边界将随着父视图高度的变化而按比例进行调整。否则,视图和其父视图的底边界的相对位置将保持不变。UIViewAutoresizingFlexibleTopMargin//视图的上边界将随着父视图高度的变化而按比例进行调整。否则,视图和其父视图的上边界的相对位置将保持不变。//这个属性是决定当视图大小边界发生改变时,其子视图是否也跟着自动调整大小,默认为YES@property(nonatomic) BOOL autoresizesSubviews//决定当视图边界变时呈现视图内容的方式@property(nonatomic) UIViewContentMode contentModeUIViewContentMode枚举值:UIViewContentModeScaleToFill                //填充UIViewContentModeScaleAspectFit             //缩放填充UIViewContentModeRedraw                     //重绘边界UIViewContentModeCenter                     //保持相同的大小,居中UIViewContentModeTop                        //UIViewContentModeBottom,UIViewContentModeLeft,UIViewContentModeRight,UIViewContentModeTopLeft,UIViewContentModeTopRight,UIViewContentModeBottomLeft,UIViewContentModeBottomRight,返回最符合其子视图的大小。返回最佳尺寸,默认返回self.frame.size- (CGSize)sizeThatFits:(CGSize)size//应用最佳尺寸- (void)sizeToFit视图布局//对子视图布局- (void)layoutSubviews//标记视图需要重新布局,会调用layoutSubviews- (void)setNeedsLayout//当调用了setNeedsLayout并不会马上调用layoutSubviews,这时候调用该方法,可以强制发生重新布局。- (void)layoutIfNeeded//返回view是否是约束布局模式+ (BOOL)requiresConstraintBasedLayout//返回一个BOOL,判断自动布局是否可为转换约束布局- (BOOL)translatesAutoresizingMaskIntoConstraints//设置在约束布局系统中是否把自动布局转换为约束布局- (void)setTranslatesAutoresizingMaskIntoConstraints:(BOOL)flag管理视图的约束//返回view的约束数组- (NSArray *)constraints//添加约束- (void)addConstraint:(NSLayoutConstraint *)constraint参数:constraint:约束对象NSLayoutConstraint 为约束条件,详情请参见NSLayoutConstraint文档//添加一组约束- (void)addConstraints:(NSArray *)constraints//移除某个约束- (void)removeConstraint:(NSLayoutConstraint *)constraint//移除一组约束- (void)removeConstraints:(NSArray *)constraints测量约束布局//返回最合适的尺寸- (CGSize)systemLayoutSizeFittingSize:(CGSize)targetSize//满足约束视图布局的大小- (CGSize)systemLayoutSizeFittingSize:(CGSize)targetSize        withHorizontalFittingPriority:(UILayoutPriority)horizontalFittingPriority              verticalFittingPriority:(UILayoutPriority)verticalFittingPriority//返回view的自然尺寸- (CGSize)intrinsicContentSize//使内容尺寸无效化- (void)invalidateIntrinsicContentSize//返回缩小的视图布局的轴线-(UILayoutPriority)contentCompressionResistancePriorityForAxis:(UILayoutConstraintAxis)axis参数:axis:布局约束枚举值:UILayoutConstraintAxisHorizontal    //水平UILayoutConstraintAxisVertical      //垂直返回值:小数//设置缩小的视图布局的轴线- (void)setContentCompressionResistancePriority:(UILayoutPriority)priority                                        forAxis:(UILayoutConstraintAxis)axis//返回放大的视图布局的轴线- (UILayoutPriority)contentHuggingPriorityForAxis:(UILayoutConstraintAxis)axis//设置放大的视图布局的轴线- (void)setContentHuggingPriority:(UILayoutPriority)priority                          forAxis:(UILayoutConstraintAxis)axis校准约束布局//返回视图矩形对于指定视图框架- (CGRect)alignmentRectForFrame:(CGRect)frame//返回框架对于指定视图矩形- (CGRect)frameForAlignmentRect:(CGRect)alignmentRect//返回自定义视图框架- (UIEdgeInsets)alignmentRectInsets//如果超出约束范围,自动生成基线限制,以满足视图需求- (UIView *)viewForBaselineLayout触发约束布局//返回约束布局是否需要更新,YES为是- (BOOL)needsUpdateConstraints//设置需要更新约束布局- (void)setNeedsUpdateConstraints//更新约束布局- (void)updateConstraints//更新约束布局及其子布局- (void)updateConstraintsIfNeeded调试约束布局//返回影响视图布局限制的轴线- (NSArray *)constraintsAffectingLayoutForAxis:(UILayoutConstraintAxis)axis//返回视图布局约束是否影响指定视图,主要用于调试约束布局,结合exerciseAmbiguityInLayout。- (BOOL)hasAmbiguousLayout//随机改变不同效值布局视图,主要用于调试基于约束布局的视图- (void)exerciseAmbiguityInLayout配置的内容边距//布局边界,距离父视图的上下左右的距离@property(nonatomic) UIEdgeInsets layoutMargins//这个属性默认是NO。如果把它设为YES,layoutMargins会根据屏幕中相关View的布局而改变@property(nonatomic) BOOL preservesSuperviewLayoutMargins//在我们改变View的layoutMargins这个属性时,会触发这个方法。我们在自己的View里面可以重写这个方法来捕获layoutMargins的变化。在大多数情况下,我们可以在这个方法里触发drawing和layout的Update- (void)layoutMarginsDidChange绘制和更新视图//在view中绘制一个矩形- (void)drawRect:(CGRect)rect//使view重绘- (void)setNeedsDisplay//指定矩形重绘- (void)setNeedsDisplayInRect:(CGRect)invalidRect//应用到当前视图的比例Scale@property(nonatomic) CGFloat contentScaleFactor//视图颜色属性发生变化时,由系统调用- (void)tintColorDidChange格式化内容//返回view的打印对象- (UIViewPrintFormatter *)viewPrintFormatter//使用某个区域来打印- (void)drawRect:(CGRect)areaforViewPrintFormatter:(UIViewPrintFormatter *)formatter管理手势//添加手势识别器- (void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer参数:gestureRecognizer:手势识别器对象,详情参见UIGestureRecognizer文档//删除手势识别器- (void)removeGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer//访问手势集合@property(nonatomic, copy) NSArray *gestureRecognizers//通过返回值决定是否识别此手势- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer保存和恢复状态//该标示符决定该视图是否支持恢复状态,其实也只是个标示符而已@property(nonatomic, copy) NSString *restorationIdentifier//保存视图状态相关信息- (void)encodeRestorableStateWithCoder:(NSCoder *)coder//恢复和保持视图状态相关信息- (void)decodeRestorableStateWithCoder:(NSCoder *)coder捕捉视图快照//返回一个基于当前视图的内容快照视图。- (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates//返回一个基于当前视图的特定内容的快照视图,拉伸插图。- (UIView *)resizableSnapshotViewFromRect:(CGRect)rect                       afterScreenUpdates:(BOOL)afterUpdates                            withCapInsets:(UIEdgeInsets)capInsets//利用View层次结构并将其绘制到当前的上下文中- (BOOL)drawViewHierarchyInRect:(CGRect)rect             afterScreenUpdates:(BOOL)afterUpdates在运行时确定View//当前视图的标签@property(nonatomic) NSInteger tag//返回指定tag的view- (UIView *)viewWithTag:(NSInteger)tag视图坐标系统之间的转换//把本地视图(调用者)下的point(第一参数)转换为指定view(第二参数)的point(返回值)- (CGPoint)convertPoint:(CGPoint)point                 toView:(UIView *)view//把指定view(第二参数)下的point(第一参数)转化为本地视图(调用者)的point(返回值)- (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//这个函数的用处是判断当前的点击或者触摸事件的点是否在当前的view中- (BOOL)pointInside:(CGPoint)point          withEvent:(UIEvent *)event结束视图编辑//当前视图结束编辑- (BOOL)endEditing:(BOOL)force视图相关的变化//告诉视图添加子视图- (void)didAddSubview:(UIView *)subview//即将移除子视图- (void)willRemoveSubview:(UIView *)subview//即将从父视图移除- (void)willMoveToSuperview:(UIView *)newSuperview//已经移除,父视图改变- (void)didMoveToSuperview//窗口对象即将改变- (void)willMoveToWindow:(UIWindow *)newWindow//已经移除窗体对象- (void)didMoveToWindow


0 0
原创粉丝点击