iOS官方文档UIView

更新时间:2023-05-05 19:52:53 阅读: 评论:0

iOS官⽅⽂档UIView
⼀、初始化⽅法
1、- initWithFrame:
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(10, 100, lf.view.frame.size.width-20, 300)];
⼆、配置View的视图外观
1、backgroundColor 设置背景颜⾊
view.backgroundColor = [UIColor orangeColor];
(1) backgroundColor顾名思义就是背景颜⾊,就是整个UIView⼦类的充满视图的颜⾊;
(2) 默认⽗视图设置的背景颜⾊,如果⼦视图的背景颜⾊也是default那么默认透明的视图都是⽗视图的背景颜⾊;
(3) 背景颜⾊对于视图上的带有线条的内容是⽆法改变的,⽐如字体颜⾊;
2、hidden 是否隐藏
该属性为BOOL值,⽤来表⽰UIView是否隐藏,默认值是NO。 当值设为YES时:
1、当前的UIView和subview都会被隐藏,⽽不管subview的hidden值为多少。
2、当前UIView会从响应者链中移除,⽽响应者链中的下⼀个会成为第⼀响应者 总之,同alpha为0时的显⽰效果相同。
view.hidden = NO;
3、alpha 透明度设置
液晶显⽰器是由⼀个个的像素点组成的,每个像素点都可以显⽰⼀个由RGBA颜⾊空间组成的⼀种⾊值。其中的A就表⽰透明度alpha,UIView中alpha是⼀个浮点值,取值范围0~1.0,表⽰从完全透明到完全不透明。
当把alpha的值设置成0以后: 1、当前的UIView和subview都会被隐藏,⽽不管subview的alpha值为多少。
2、当前UIView会从响应者链中移除,⽽响应者链中的下⼀个会成为第⼀响应者 alpha的默认值是1.0。
另外,更改alpha值时,默认是有动画效果的,这是因为图层在Cocoa中是由Core
Animation中CALayer表⽰的,该动画效果是CALayer的隐含动画。当然也有办法禁⽤此动画效果。
view.alpha = 0.5;
4、opaque 是否透明
图层叠加时,设置叠加部分图层显⽰的透明度。
view.opaque = NO;
5、tintColor
[[UIBarButtonItem  appearance]  tTintColor:[UIColor  blueColor]];
(1) tintColor字⾯意思也是⾊彩,痕迹,相当于是⼀个描述⼀个视图中的线条的颜⾊,这与痕迹的中⽂释义不谋⽽合;
(2) tintColor是描述线条轮廓的⼀种颜⾊,该颜⾊默认具有传递性,默认状态下最底部的视图的tintcolor会⼀直往上⾯的视图传递;
(3) 如果⼦视图改变了tintcolor那么将会和⽗视图的tintColor不⼀样;传递链从此处断开;
6、tintAdjustmentMode
view.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;
7、clipsToBounds
作⽤:决定了⼦视图的显⽰范围。具体的说,就是当取值为YES时,剪裁超出⽗视图范围的⼦视图部分;当取值为NO时,不剪裁⼦视图。默认值为NO。
view.clipsToBounds = YES;
8、clearsContextBeforeDrawing
view.clearsContextBeforeDrawing = YES;
9、maskView
10、+ layerClass
11、layer
三、配置与事件相关的⾏为
1、urInteractionEnabled
(1) 该属性值为布尔类型,如属性本⾝的名称所释,该属性决定UIView是否接受并响应⽤户的交互。
(2) 当值设置为NO后,UIView会忽略那些原本应该发⽣在其⾃⾝的诸如touch和keyboard等⽤户事件,并将这些事件从消息队列中移除出去。当值设置为YES后,这些⽤户事件会正常的派发⾄UIView本⾝(前提事件确实发⽣在该view上),UIView会按照之前注册的事件处理⽅法来响应这些事件。
(3) 在⼀次动画执⾏流程中,动画包含的所有UIView都会被临时禁⽌⽤户交互,⽽不管每个UIView本⾝urInteractionEnabled此时的属性值是YES还是NO。但是在配置动画时,通过添加UIViewAnimationOptionAllowUrInteraction选项可以禁⽌这种⾏为的发⽣,使UIView即使是在执⾏动画期间依然能响应⽤户事件。
2、multipleTouchEnabled
multipleTouchEnabled 默认是NO,如果设置为YES则⽀持多点触碰。
3、exclusiveTouch
(1) 默认是NO,如果设置为YES则当前UIView会独占整个Touch事件。具体来说就是如果UIView设置了exclusiveTouch属性为YES则当这个UIView成为第⼀响应者时,在⼿指离开屏幕前其他view不会响应任何touch事件。
(2) 作⽤举例:UITableView的每个cell都需要使⽤exclusive,否则同时点击多个cell会触发每个视图的事件响应。⼿势识别会忽略此属性。
四、配置矩形的边界框
1、frame
描述当前视图在其⽗视图中的位置和⼤⼩
2、bounds
描述当前视图在其⾃⾝坐标系统中的位置和⼤⼩
3、center
描述当前视图的中⼼点在其⽗视图中的位置
4、transform
UIView有个transform的属性,通过设置该属性,我们可以实现调整该view在其superView中的⼤⼩和位置,具体来说,Transform(变化矩阵)是⼀种3×3的矩阵,通过这个矩阵我们可以对⼀个坐标系统进⾏缩放,平移,旋转以及这两者的任意组着操作。⽽且矩阵的操作不具备交换律,即矩阵的操作的顺序不同会导致不同的结果。
常⽤的三种实现选中的⽅式:
由此可以发现屏幕旋转其实就是通过view的矩阵变化实现,当设备监测到旋转的时候,会通知当前程
序,当前程序再通知程序中的window,window会通知它的rootViewController的,rootViewController对其view的transform进⾏设置,最终完成旋转。
五、管理View的层次结构
1、superview
接收者的⽗类。
2、subviews
接收者的⼦类。
3、window
UIWindow对象是所有UIView的根视图,管理和协调的应⽤程序的显⽰、分发事件给View。UIWindow类是UIView的⼦类,可以看作是特殊的UIView。⼀般应⽤程序只有⼀个UIWindow对象,即使有多个UIWindow对象,也只有⼀个UIWindow可以接受到⽤户的触屏事件。
4、- addSubview:
添加⼀个⼦视图到接收者并让它在最上⾯显⽰出来。
5、- bringSubviewToFront:
将某个⼦视图调整到最上边。
-(void)bringSubviewToFront:(UIView *)view
6、- ndSubviewToBack:
将某个⼦视图调整到最下边。
-(void)ndSubviewToBack:(UIView *)view
7、- removeFromSuperview
将⼦视图从⽗视图中移除掉。
8、- inrtSubview:atIndex:
在特定的位置,插⼊⼀个⼦视图。
view:被插⼊的⼦视图。
index:被插⼊的位置下标,位置下标从0开始;下标不能⼤于⼦视图的总数。
-(void)inrtSubview:(UIView *)view atIndex:(NSInteger)index
9、- inrtSubview:aboveSubview:
插⼊⼀个View到指定View的上层。
-(void)inrtSubview:(UIView *)view aboveSubview:(UIView
*)siblingSubView
10、- inrtSubview:belowSubview:
插⼊⼀个View到指定View的下层。
-(void)inrtSubview:(UIView *)view belowSubview:(UIView
*)siblingSubView
11、-exchangeSubviewAtIndex:withSubviewAtIndex:
根据下标交换两个层的位置。
(void)exchangeSubviewAtIndex:(NSInteger)index withSubviewAtIndex:(NSInteger)index
12、- isDescendantOfView:
返回⼀个布尔值指出接收者是否是给定视图的⼦视图或者指向那个视图.
- (BOOL)isDescendantOfView:(UIView *)view
参数
view
⼀个视图⽤来测试⼦视图在视图层次中的关系
返回值
如果接收者是视图的⼦视图就返回YES,或者视图就是接收者;否则就是NO
六、配置布局⾏为
1、autoresizingMask
在 UIView 中有⼀个autoresizingMask的属性,它对应的是⼀个枚举的值(如下),属性的意思就是⾃动调整⼦控件与⽗控件中间的位置,宽⾼。
enum {
UIViewAutoresizingNone
=0,
UIViewAutoresizingFlexibleLeftMargin
=1 << 0,
UIViewAutoresizingFlexibleWidth
=1 << 1,
UIViewAutoresizingFlexibleRightMargin
=1 << 2,
UIViewAutoresizingFlexibleTopMargin
=1 << 3,
UIViewAutoresizingFlexibleHeight
=1 << 4,
UIViewAutoresizingFlexibleBottomMargin
=1 << 5
};
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。
其它的组合类似。
2、autoresizesSubviews
//⾼度⾃动伸缩,右边间距⾃动伸缩
lf.autoresizesSubviews = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleRightMargin;
UIViewAutoresizingNone
这个常量如果被设置,视图将不进⾏⾃动尺⼨调整。
UIViewAutoresizingFlexibleHeight
这个常量如果被设置,视图的⾼度将和⽗视图的⾼度⼀起成⽐例变化。否则,视图的⾼度将保持不变。 UIViewAutoresizingFlexibleWidth
这个常量如果被设置,视图的宽度将和⽗视图的宽度⼀起成⽐例变化。否则,视图的宽度将保持不变。 UIViewAutoresizingFlexibleLeftMargin
这个常量如果被设置,视图的左边界将随着⽗视图宽度的变化⽽按⽐例进⾏调整。否则,视图和其⽗视图的左边界的相对位置将保持不变。UIViewAutoresizingFlexibleRightMargin
这个常量如果被设置,视图的右边界将随着⽗视图宽度的变化⽽按⽐例进⾏调整。否则,视图和其⽗视图的右边界的相对位置将保持不变。UIViewAutoresizingFlexibleBottomMargin
这个常量如果被设置,视图的底边界将随着⽗视图⾼度的变化⽽按⽐例进⾏调整。否则,视图和其⽗视图的底边界的相对位置将保持不变。UIViewAutoresizingFlexibleTopMargin
这个常量如果被设置,视图的上边界将随着⽗视图⾼度的变化⽽按⽐例进⾏调整。否则,视图和其⽗视图的上边界的相对位置将保持不变。
3、contentMode
UIViewContentMode 都有哪些值:
typedef NS_ENUM(NSInteger, UIViewContentMode) {
UIViewContentModeScaleToFill,
UIViewContentModeScaleAspectFit,      // contents scaled to fit with fixed aspect. remainder is transparent
UIViewContentModeScaleAspectFill,    // contents scaled to fill with fixed aspect. some portion of content may be clipped.
UIViewContentModeRedraw,              // redraw on bounds change (calls -tNeedsDisplay)
UIViewContentModeCenter,              // contents remain same size. positioned adjusted.
UIViewContentModeTop,
UIViewContentModeBottom,
UIViewContentModeLeft,
UIViewContentModeRight,
UIViewContentModeTopLeft,
UIViewContentModeTopRight,
UIViewContentModeBottomLeft,
UIViewContentModeBottomRight,
};
默认值是0,也就是:
UIViewContentModeScaleToFill
⼀个个来理解下吧:
UIViewContentModeScaleToFill:表⽰完全填充在 frame ⾥。
UIViewContentModeScaleAspectFit:保持⽐例,都在 frame 内。
UIViewContentModeScaleAspectFill:保持⽐例,填满但 frame 外也有。
UIViewContentModeRedraw:啥意思我还不懂。
其他的是相似的,好理解:
UIViewContentModeCenter:这个 image 的中⼼与 frame 的中⼼重合。
UIViewContentModeTop:这个 image 的上边缘与 frame 的上边缘重合。
UIViewContentModeBottom:这个 image 的下边缘与 frame 的下边缘重合。
UIViewContentModeLeft:这个 image 的左边缘与 frame 的左边缘重合。
UIViewContentModeRight:这个 image 的右边缘与 frame 的右边缘重合。
UIViewContentModeTopLeft:类似。
UIViewContentModeTopRight:类似。
UIViewContentModeBottomLeft:类似。
UIViewContentModeBottomRight:类似。

本文发布于:2023-05-05 19:52:53,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/97053.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:视图   设置   事件   属性   位置
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图