uiview父类contentmode 是什么属性

tyle="font-family:S font-size:16 line-height:24px"&
在调用视图的drawRect:方法之前,UIKit 会自动对描画环境进行配置,使左上角成为
坐标系统的原点,在这个环境中发生的 Quartz&调用都可以正确地在视图中描画。
视图对象通过 frame、 bounds、和 center&属 性声明来跟踪自己的大小和位置。frame 属性包含一个矩形,即边框矩形,用于指定视图相对于其父视图坐标系统的位置和大小。bounds 属性也包含一个矩形,即边界矩形,负责定义视图相对于本地坐标系统的位置和大小。虽然边界矩形的原点通常被设置为(0, 0),但这并不是必须的。center 属性包含边框矩形的中心点。
当您在代码中通过 initWithFrame:方法创建一个视图对象时,其frame 属性就会被设置。该方法同时也将bounds 矩形的原点初始化为(0.0, 0.0),大小则和视图的边框相同。然后center 属性会被设置为边框的中心点。
缺省情况下,视图的边框并不会被父视图的边框裁剪。如果您希望让一个视图裁剪
其子视图,需要将其 clipsToBounds&属性设置为YES。
举例来说, UIView&类中包含一个 transform&属性声明,您可以通过它来对整个视图实行各种类型的平移、比例缩放、和变焦缩放效果。缺省情况下,这个属性的值是一个恒等变换,不会改变视图的外观。在加入变换之前,首先要得到该属性中存储的 CGAffineTransform&结构,用相应的Core Graphics 函数实行变换,然后再将修改后的变换结构重新赋值给视图的transform 属性。
视图的 contentMode&属性决定了边界变化和缩放操作作用到视图上产生的效果。
缺省情况下,这个属性的值被设置为 UIViewContentModeScaleToFill,意味着视图内容总是被缩放,以适应新的边框尺寸。
不同的 UIViewContentMode&常量(比如 UIViewContentModeTop&和
UIViewContentModeBottomRight)可以使当前的内容在视图的不同角落或沿着视图的不同边界显示,还有一种模式可以将内容显示在视图的中心。
当您希望在应用程序中实现尺寸可调整的控件时,请务必考虑使用 内容模式。
内容模式通常有助于避免视图内容的描画,但是当您希望对缩放和尺寸调整过程中的视图外观进行特别的控制时,也可以使用 UIViewContentModeRedraw&模式
如果视图的 autoresizesSubviews&属性声明被设置为YES,则其子视图会根据
autoresizingMask&属性的值自动进行尺寸调整。否则,应用程序就必须通过重载 layoutSubviews&方法来提供自己的实现。
如果要使一个视图和其父视图左下角的相对位置保持不变, 可以加入 UIViewAutoresizingFlexibleRightMargin和
UIViewAutoresizingFlexibleTopMargin&常量,并将结果赋值给 autoresizingMask&属性。当同一个轴向有多个部分被设置为可变时,尺寸调整的裕量会被平均分配到各个部分上。
UIViewAutoresizingNone&这个常量如果被设置,视图将不进行自动尺寸调整。
UIViewAutoresizingFlexibleHeight
这个常量如果被设置,视图的高度将和父视图的高度一起成比
例变化。否则,视图的高度将保持不变。
UIViewAutoresizingFlexibleWidth
这个常量如果被设置,视图的宽度将和父视图的宽度一起成比
例变化。否则,视图的宽度将保持不变。
UIViewAutoresizingFlexibleLeftMargin
这个常量如果被设置,视图的左边界将随着父视图宽度的变化
而按比例进行调整。否则,视图和其父视图的左边界的相对位
置将保持不变。
UIViewAutoresizingFlexibleRightMargin
这个常量如果被设置,视图的右边界将随着父视图宽度的变化
而按比例进行调整。否则,视图和其父视图的右边界的相对位
置将保持不变。
UIViewAutoresizingFlexibleBottomMargin
这个常量如果被设置,视图的底边界将随着父视图高度的变化
而按比例进行调整。否则,视图和其父视图的底边界的相对位
置将保持不变。
UIViewAutoresizingFlexibleTopMargin
这个常量如果被设置,视图的上边界将随着父视图高度的变化
而按比例进行调整。否则,视图和其父视图的上边界的相对位
置将保持不变。
如果您通过 Interface Builder&配置视图,则可以用Size 查看器的 Autosizing&控 制来设置每个视图的自动尺寸调整行为。上图中的灵活宽度及高度常量和Interface Builder 中位于同样位置的弹簧具有同样的行为,但是空白常量的行为则是正好相反。换句话说,如果要将灵活右空白的自动尺寸调整行为应用到Interface Builder 的某个视图,必须使相应方向空间的 Autosizing&控制为空,而不是放置一个支柱。
如果视图的 autoresizesSubviews&属性被设置为 NO,则该视图的直接子视图的所有自动尺寸调整行为将被忽略。类似地, 如果一个子视图的自动尺寸调整掩码被设置为
UIViewAutoresizingNone,则该子视图的尺寸将不会被调整,因而其直接子视图的尺寸也不会被调整。
视图层次中的父-子关系可以帮助我们定义应用程序中负责处理触摸事件的对象链
创建一个新的视图对象时,需要为其分配内存,并向该对象发送一个 initWithFrame:消息,以对其进行初始化。举例来说,如果您要创建一个新的 UIView&类的实例作为其它视图的容器,则可以使用下面的代码:
CGRect&viewRect = CGRectMake(0, 0, 100, 100);
UIView* myView = [[UIView alloc]& initWithFrame:viewRect];
在iPhone 程序中,有两个地方最常用于创建视图和子视图, 它们是应用程序委托对象的 applicationDidFinishLaunching:方法和视图控制器的 loadView&方法。
调用父视图的 addSubview:方法来添加视图,该方法将一个视图添加到子视图列表的最后。
调用父视图的 insertSubview:...方法可以在父视图的子视图列表中间插入视图。
调用父视图的 bringSubviewToFront: 、 sendSubviewToBack: 、或
exchangeSubviewAtIndex:withSubviewAtIndex:方法可以对父视图的子视图进行重新排序。使用这些方法比从父视图中移除子视图并再次插入要快一些。
调用子视图(而不是父视图)的 removeFromSuperview&方法可以将子视图从父视图中移除。
创建一个带有视图的窗口
- (void) applicationDidFinishLaunching:(UIApplication *)application {
// Create the window object and assign it to the
// window instance variable of the application delegate.
window = [[UIWindow alloc] initWithFrame:[[ UIScreen&mainScreen]& bounds]];
window. backgroundColor&= [UIColor whiteColor];
// Create a simple red square
CGRect redFrame = CGRectMake(10, 10, 100, 100);
UIView *redView = [[UIView alloc] initWithFrame:redFrame];
redView.backgroundColor = [UIColor redColor];
// Create a simple blue square
CGRect blueFrame = CGRectMake(10, 150, 100, 100);
UIView *blueView = [[UIView alloc] initWithFrame:blueFrame];
blueView.backgroundColor = [UIColor blueColor];
// Add the square views to the window
[window addSubview:redView];
[window addSubview:blueView];
// Once added to the window, release the views to avoid the
// extra retain count on each of them.
[redView release];
[blueView release];
// Show the window.
[window makeKeyAndVisible];
当您为某个视图添加子视图时,UIKit 会向相应的父子视图发送几个消息,通知它们当前发生的状态变化。您可以在自己的定制视图中对诸如 willMoveToSuperview: 、
willMoveToWindow: 、 willRemoveSubview: 、 didAddSubview: 、 didMoveToSuperview&、和 didMoveToWindow这样的方法进行重载,以便在事件发生的前后进行必要的处理,并根据发生的变化更新视图的状态信息。
在视图层次建立之后,您可以通过视图的 superview&属性来取得其父视图,或者通过 subviews属性取得视图的子视图。您也可以通过 isDescendantOfView:方法来判定一个视图是否在其父视图的视图层中。一个视图层次的根视图没有父视图,因此其superview 属性被设置为nil。对于当前被显示在屏幕上的视图,窗口对象通常是整个视图层次的根视图。&
UIView 类定义了下面这些方法,用于在不同的视图本地坐标系统之间进行坐标转换:
convertPoint:fromView:
convertRect:fromView:
convertPoint:toView:
convertRect:toView:
UIWindow 的版本则使用窗口坐标系统。
convertPoint:fromWindow:
convertRect:fromWindow:
convertPoint:toWindow:
convertRect:toWindow:
UIView 类中包含一个 tag&属性。借助这个属性,您可以通过一个整数值来标识一个视图对象。您可以通过这个属性来唯一标识视图层次中的视图,以及在运行时进行视图的检索(基于tag 标识的检索比您自行遍历视图层次要快)。tag 属性的缺省值为0。您可以通过UIView 的 viewWithTag:方法来检索标识过的视图
动画块从调用UIView 的 beginAnimations:context:类方法开始,而以调用 commitAnimations类 方法作为结束。在这两个调用之间,您可以配置动画的参数和改变希望实行动画的属性值。一旦调用commitAnimations 方法,UIKit 就会开始执行动画,即把给定属性从当前值到新值的变化过程用动画表现出来。动画块可以被嵌套,但是在最外层的动画块提交之前,被嵌套的动画不会被执行。
frame 视图的边框矩形,位于父视图的坐标系中。
bounds 视图的边界矩形,位于视图的坐标系中。
center 边框的中心,位于父视图的坐标系中。
transform 视图上的转换矩阵,相对于视图边界的中心。
alpha 视图的alpha 值,用于确定视图的透明度。
用 setAnimationStartDate:方法来设置动画在commitAnimations 方法返回之后的发生日期。缺省行为是使动画立即在动画线程中执行。
用 setAnimationDelay:方法来设置实际发生动画和commitAnimations 方法返回的时间点之间的间隔。
用 setAnimationDuration:方法来设置动画持续的秒数。
用 setAnimationCurve:方法来设置动画过程的相对速度,比如动画可能在启示阶段逐渐加速,而在结束阶段逐渐减速,或者整个过程都保持相同的速度。
用 setAnimationRepeatCount:方法来设置动画的重复次数。
用 setAnimationRepeatAutoreverses:方法来指定动画在到达目标值时是否自动反向播放。您可以结合使用这个方法和 setAnimationRepeatCount:方法,使各个属性在初始值和目标值之间平滑切换一段时间。
您可以通过UIView 的
setAnimationDelegate: 类方法来设置委托, 并通过 setAnimationWillStartSelector: 和
setAnimationDidStopSelector:方法来指定接收消息的选择器方法。消息处理方法的形式如下:
- (void)animationWillStart:(NSString *)animationID context:(void *)
- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void
上面两个方法的animationID 和context 参数和动画块开始时传 beginAnimations:context:方法的参数相同:
animationID&- 应用程序提供的字符串,用于标识一个动画块中的动画。
context&- 也是应用程序提供的对象,用于向委托对象传递额外的信息。
setAnimationDidStopSelector:选择器方法还有一个参数&即一个布尔值。如果动画顺利完成,没有被其它动画取消或停止,则该值为YES。
& 任何时候,当视图的布局发生改变时,UIKit 会激活每个视图的自动尺寸调整行为,然后调用各自的 layoutSubviews&方法,使您有机会进一步调整子视图的几何尺寸。
您的应用程序调用视图的 setNeedsLayout&或 layoutIfNeeded&方法来强制进行布局。
您的应用程序调用视图背后的层对象的 setNeedsLayout&方法来强制进行布局。
您也可以用 layoutSubviews&方法来调整作为子层链接到视图层的定制 CALayer&对
有些时候,应用程序数据模型的变化会影响到相应的用户界面。为了反映这些变化,您可以将相应的视图标识为需要刷新(通过调用 setNeedsDisplay&或 setNeedsDisplayInRect:方法)
您可以通过改变视图的 hidden&属性声明来隐藏或显示视图
初始化一个视图的子类
- (id) initWithFrame:(CGRect)aRect {
self = [super initWithFrame:aRect];
if (self) {
// setup the initial properties of
在iPhone OS 中,装载nib 的代
码并不通过 initWithFrame:方法来实例化新的视图对象,而是通过NSCoding 协议定义的 initWithCoder:方法来进行。
drawRect:方法的一个简单实现,即在视图边界描画一个10像素宽的红色
边界。由于UIKit 描画操作的实现也是基于Quartz,所以您可以像下面这样混合使用不同的描画调用来得到期望的结果。
- (void)drawRect:(CGRect)rect {
CGContextRef&context =&
UIGraphicsGetCurrentContext();
CGRect myFrame = self.
CGContextSetLineWidth(context, 10);
[[UIColor redColor] set];
UIRectFrame(myFrame); // 捣鼓来捣鼓去,搞得复杂!!!
处理触摸事件的视图通常需要实现下面的所有方法
touchesBegan:withEvent:
touchesMoved:withEvent:
touchesEnded:withEvent:
touchesCancelled:withEvent:
激活多点触摸事件: multipleTouchEnabled&属性声明设置为YES。
您可以通过改变视图的 userInteractionEnabled&属性值来控制视图是否可以对事件进行处理。
还可以使用UIApplication 对象的 beginIgnoringInteractionEvents&和
endIgnoringInteractionEvents&方法
UIKit 会通过UIView 的 hitTest:withEvent:和 pointInside:withEvent:方法
来确定触摸事件是否发生在指定的视图上。
阅读(...) 评论()iOS图片填充UIImageView(contentMode)
本文主要形象的介绍一下UIView的contentMode属性:
UIViewContentModeScaleAspectFit, //这个图片都会在view里面显示,并且比例不变 这就是说 如果图片和view的比例不一样 就会有留白如下图1
UIViewContentModeScaleAspectFill, // 这是整个view会被图片填满,图片比例不变 ,这样图片显示就会大于view如下图2
既然要求不高 又不能留白 那我就可以用第二种 可是这样就超出位置了,于是同事又开口了 截掉就可以了
然后完整过程就两步
[self.prp_imageViewsetContentMode:UIViewContentModeScaleAspectFill];
self.prp_imageView.clipsToBounds = YES;
完美解决 以下是效果图
实在是太喜欢他们了就先暂时当我的模特吧
然后 我就把所有的都是试验了一遍,各种区别大家就看图总结吧
UIViewContentModeCenter
UIViewContentModeTop
UIViewContentModeBottom
UIViewContentModeLeft
UIViewContentModeRight
UIViewContentModeTopLeft
UIViewContentModeTopRight
UIViewContentModeBottomLeft
UIViewContentModeBottomRight
其他更详细的属性介绍:
UIView有个UIViewContentMode类型的属性contentMode,可以通过它来修改视图的内容显示模式。
view sourceprint? 01.typedef NS_ENUM(NSInteger, UIViewContentMode) { 02.UIViewContentModeScaleToFill, 03.UIViewContentModeScaleAspectFit,
04.UIViewContentModeScaleAspectFill,
05.UIViewContentModeRedraw,
06.UIViewContentModeCenter,
07.UIViewContentModeTop, 08.UIViewContentModeBottom, 09.UIViewContentModeLeft, 10.UIViewContentModeRight, 11.UIViewContentModeTopLeft, 12.UIViewContentModeTopRight, 13.UIViewContentModeBottomLeft, 14.UIViewContentModeBottomRight, 15.};
实例代码:
view sourceprint? 1.CGRect rect = self.view. 2.UIImageView *imageView = [[UIImageView alloc] initWithFrame:rect]; 3.imageView.contentMode = UIViewContentModeT 4.imageView.image = [UIImage imageNamed:@demoImage]; 5.[self.view addSubview:imageView];
UIViewContentModeScaleToFill
根据视图的比例去拉伸图片内容。
UIViewContentModeScaleAspectFit
保持图片内容的纵横比例,来适应视图的大小。
UIViewContentModeScaleAspectFill
用图片内容来填充视图的大小,多余得部分可以被修剪掉来填充整个视图边界。
UIViewContentModeRedraw
这个选项是单视图的尺寸位置发生变化的时候通过调用setNeedsDisplay方法来重新显示。
UIViewContentModeCenter
保持图片原比例在视图中间显示图片内容
如果视图大小小于图片的尺寸,则图片会超出视图边界,下面类同
UIViewContentModeTop
保持图片原比例在视图中间顶部显示图片内容
UIViewContentModeBottom
保持图片原比例在视图中间底部显示图片内容
UIViewContentModeLeft
保持图片原比例在视图中间左边显示图片内容
UIViewContentModeRight
保持图片原比例在视图中间右边显示图片内容
UIViewContentModeTopLeft
保持图片原比例在视图左上角显示图片内容
UIViewContentModeTopRight
保持图片原比例在视图右上角显示图片内容
UIViewContentModeBottomLeft
保持图片原比例在视图左下角显示图片内容
UIViewContentModeBottomRight
保持图片原比例在视图右下角显示图片内容ios 之contentmode
contentMode属性:
这个属性是用来设置图片的显示方式,如居中、居右,是否缩放等,有以下几个常量可供设定:
UIViewContentModeScaleToFill UIViewContentModeScaleAspectFit UIViewContentModeScaleAspectFill UIViewContentModeRedraw UIViewContentModeCenter UIViewContentModeTop UIViewContentModeBottom UIViewContentModeLeft UIViewContentModeRight UIViewContentModeTopLeft UIViewContentModeTopRight UIViewContentModeBottomLeft UIViewContentModeBottomRight
注意以上几个常量,凡是没有带Scale的,当图片尺寸超过 ImageView尺寸时,只有部分显示在ImageView中。UIViewContentModeScaleToFill属性会导致图片变形。UIViewContentModeScaleAspectFit会保证图片比例不变,而且全部显示在ImageView中,这意味着ImageView会有部分空白。UIViewContentModeScaleAspectFill也会证图片比例不变,但是是填充整个ImageView的,可能只有部分图片显示出来。
前三个效果如下图:
iOS图片的填充方式UIImageView(contentMode)有什么不同
UIViewContentMode各类型效果
UIViewContentMode的各种样式
UIViewContentMode各类型的效果
经验之谈—如何让图片长的好看(contentMode)
UIViewContentMode各模式的含义和效果
UIView的contentMode使用小结
UIImageView 的contentMode属性应用
UIViewContentMode详解
UIView的contentMode属性总结
没有更多推荐了,搜索结果部分由
哎呦,网络不给力,请重试UIImageView的contentMode使用UIViewContentModeScale... - 简书
UIImageView的contentMode使用UIViewContentModeScaleAspectFill出现的问题
项目中,在UICollectionViewCell里面使用了一个UIImageView,其使用的contentMode为UIViewContentModeScaleAspectFill,并且UIImageView的top和right距离父控件为4像素,当不加载图片的时候,现在正常,当加载图片时,出现莫名奇妙的问题。最后搜索资料,如果需要显示正常,要将clipsToBounds设置为YES.如果使用UIViewContentModeScaleAspectFill倒置布局不正常,可以尝试使用此方法.
本文转载自:http://www.cocoachina.com/ios/40.html 为了防止cocochina以后删除该文章,故转载至此; 图像IO 潜伏期值得思考 - 凯文 帕萨特 在第13章“高效绘图”中,我们研究了和Core Graphic...
在第13章“高效绘图”中,我们研究了和Core Graphics绘图相关的性能问题,以及如何修复。和绘图性能相关紧密相关的是图像性能。在这一章中,我们将研究如何优化从闪存驱动器或者网络中加载和显示图片。 加载和潜伏 绘图实际消耗的时间通常并不是影响性能的因素。图片消耗很大一...
许多UIView的子类,如一个UIButton或一个UILabel,它们知道怎么绘制自己。迟早,你也将想要做一些自己的绘制。你可以事先准备好您的绘图作为一个图像文件。您可以用代码绘制一张图片在应用程序运行中。您可以在`UIView`子类,例如一个UIImageVie或一个U...
iOS的坐标系 原点是屏幕的左上角,各机型取值范围如下表所述: UIView 视图的类(略讲) @property(nonatomic) CGR 尺寸 @property(nonatomic,copy) UIColor *backgroundColor ...
*7月8日上午 N:Block :跟一个函数块差不多,会对里面所有的内容的引用计数+1,想要解决就用__block或__weak给其重新命名一遍 写的方法 (1)Bolck 的实现:返回值(^名字)(形式参数……)=^返回值(实参……){代码,有返回值的话就返回}; (2)...
文|甜小姐(原创) 01 顾尘开车来接我的时候,已是傍晚时分,天边弥漫着一层流云,路边的树荫倒映在地面,映衬着砂砾的斑驳美得不像话。一辆白色的车子缓缓停下,顾尘从车窗探出头来,傲娇的说:“上车!” 我冲她莞尔一笑,推开了车门。 “好久不见,结婚了吗?”她一边转动方向盘,一边...
你感冒20多天,你活该,这是我骂我自己的话,也是现在真实的我,我也很讨厌现在的我, 我想现在的现状就是胖子想减肥,下定决心要坚持去健身房锻炼,可不到一个星期又回到了最初的原点,该吃,吃,该喝,喝,该睡,睡 短暂性的激情是没有用的,我一直在想我为什么会变成现在这个样子? 第一...
1.读报|叙利亚国防部:已掌握美国土耳其支持&IS&证据 国家天文台与“突破计划”签署合作意向 共同探寻地外生命 上海买房首付不低于35% 美国实体店“黑五”销售额下滑10%:消费者向线上大举转移 2.读文|《电商视觉运营》 3.读句| 其实努力只需要执行力 不努力才需要勇...
看完三年级上册英语,每天学会二十个单词,会读会写,加油!!!}

我要回帖

更多关于 content音响 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信