iOS UIView 类(方法3)

管理用户界面方向

视图内容的语义描述,用于确定在从左到右和从右到左的布局之间切换时是否应该翻转视图。
@property(nonatomic) UISemanticContentAttribute semanticContentAttribute;
// 讨论
在从左到右和从右到左的布局之间切换时,有些视图不应该翻转。
例如,视图是回放控件的一部分,或者表示不变的物理方向(上、下、左、右)。
与其考虑视图是否应该改变其方向,不如选择最能描述视图的语义内容属性。
在创建包含子视图的视图时,可以使用userInterfaceLayoutDirectionForSemanticContentAttribute: class方法来确定是否应该翻转子视图,并按适当的顺序排列视图。
有关可能值的列表,请参见UISemanticContentAttribute。
---------------------------------------------------------------------------------
用户界面布局方向适合于安排视图的即时内容。
@property(readonly, nonatomic) UIUserInterfaceLayoutDirection effectiveUserInterfaceLayoutDirection;
// 讨论
当视图的直接内容被安排或绘制时,您应该始终查询此属性的值。
此外,请注意,您不能假定该值通过视图的子树传播。
---------------------------------------------------------------------------------
返回给定语义内容属性的用户界面方向。
+ (UIUserInterfaceLayoutDirection)userInterfaceLayoutDirectionForSemanticContentAttribute:(UISemanticContentAttribute)attribute;
// attribute
视图的语义内容属性。
// 返回值
用户界面布局方向(从左到右或从右到左)。
// 讨论
在创建包含子视图的视图时,可以使用此方法确定是否应该翻转子视图,并按适当的顺序排列视图。
---------------------------------------------------------------------------------
返回指定语义内容属性所暗示的相对于指定布局方向的布局方向。
+ (UIUserInterfaceLayoutDirection)userInterfaceLayoutDirectionForSemanticContentAttribute:(UISemanticContentAttribute)semanticContentAttribute relativeToLayoutDirection:(UIUserInterfaceLayoutDirection)layoutDirection;
// semanticContentAttribute
视图的语义内容属性。
// layoutDirection
用户界面布局方向(UIUserInterfaceLayoutDirectionLeftToRight或uiuserinterfacelayoutdirectionrightttoleft)。
// 返回值
语义内容属性所隐含的布局方向,并相对于布局方向。
// 讨论
例如,当这个方法被传递给uiuserinterfacelayoutdirectionrightttoleft的布局方向和UISemanticContentAttributePlayback的语义内容属性时,它返回UIUserInterfaceLayoutDirectionLeftToRight。
虽然布局和绘图代码可以使用这种方法来确定如何安排元素,但是查询容器视图的effectiveUserInterfaceLayoutDirection属性可能更容易。

添加和删除交互

向视图添加交互。
- (void)addInteraction:(id<UIInteraction>)interaction;
// interaction
要添加到视图中的交互对象。
---------------------------------------------------------------------------------
从视图中移除交互。
- (void)removeInteraction:(id<UIInteraction>)interaction;
// interaction
要从视图中删除的交互对象。
---------------------------------------------------------------------------------
视图的交互数组。
@property(nonatomic, copy) NSArray<id<UIInteraction>> *interactions;
---------------------------------------------------------------------------------
交互为访问拥有它的视图而实现的协议。
@protocol UIInteraction
// 协议的三个方法
拥有交互的视图。
必需的。
@property(nonatomic, weak, readonly) __kindof UIView *view;

告诉交互视图从视图的交互数组中添加或删除它。
必需的。
- (void)didMoveToView:(UIView *)view;
// view
在其交互数组中拥有并包含交互的视图。
如果视图为nil,则交互的所有者将交互从其交互数组中删除。

告诉交互,视图将从视图的交互数组中添加或删除它。
必需的。
- (void)willMoveToView:(UIView *)view;
// view
将在其交互数组中包含并拥有交互的视图。
如果视图为nil,则交互的所有者将从其交互数组中删除交互。

绘制和更新视图

在传入的rect内绘制接收方的图像。
- (void)drawRect:(CGRect)rect;
// rect
视图边界中需要更新的部分。
第一次绘制视图时,这个矩形通常是视图的整个可见边界。
然而,在随后的绘图操作中,矩形可能只指定视图的一部分。
// 讨论
这个方法的默认实现什么也不做。
使用Core Graphics和UIKit等技术来绘制视图内容的子类应该覆盖这个方法并在那里实现它们的绘图代码。
如果视图以其他方式设置其内容,则不需要覆盖此方法。
例如,如果视图只显示背景颜色,或者视图直接使用底层对象设置其内容,则不需要覆盖此方法。
当这个方法被调用时,UIKit已经为你的视图恰当地配置了绘图环境,你可以简单地调用任何你需要的绘图方法和函数来渲染你的内容。
具体来说,UIKit为绘图创建并配置一个图形上下文并调整该上下文的转换,使其原点与视图边界矩形的原点匹配。
您可以使用UIGraphicsGetCurrentContext函数获得对图形上下文的引用,但是不要建立对图形上下文的强引用,因为它可以在调用drawRect:方法之间进行更改。
同样,如果你画使用OpenGL ES和GLKView类,GLKit配置底层OpenGL ES上下文适当视图之前调用该方法(或GLKView:图形:方法GLKView委托),所以您可以简单地问题无论OpenGL ES命令你需要使你的内容。
有关如何使用OpenGL ES绘图的更多信息,请参阅OpenGL ES编程指南。
您应该将任何绘图限制为rect参数中指定的rect。
此外,如果视图的不透明属性设置为YES,则drawRect:方法必须完全用不透明内容填充指定的矩形。
如果你直接子类化UIView,这个方法的实现不需要调用super。
但是,如果要子类化一个不同的视图类,则应该在实现的某个位置调用super。
当视图首次显示时或当发生使视图的可见部分无效的事件时,将调用此方法。
您不应该自己直接调用这个方法。
要使视图的一部分无效,从而导致该部分被重新绘制,请调用setNeedsDisplay或setNeedsDisplayInRect: 方法替代
---------------------------------------------------------------------------------
将接收器的整个边界矩形标记为需要重新绘制。
- (void)setNeedsDisplay;
// 讨论
您可以使用此方法或setNeedsDisplayInRect:通知系统您的视图的内容需要重新绘制。
此方法记录请求并立即返回。
视图实际上要到下一个绘图周期才会重新绘制,此时所有失效的视图都会被更新。
您应该使用此方法来请求仅当视图的内容或外观发生更改时才重新绘制视图。
如果只是更改视图的几何形状,通常不会重新绘制视图。
相反,它的现有内容是根据视图的contentMode属性中的值进行调整的。
重新显示现有内容可以避免重新绘制未更改的内容,从而提高性能。
// 请注意
如果视图由CAEAGLLayer对象支持,则此方法无效。
它只适用于使用本地绘图技术(如UIKit和Core Graphics)呈现内容的视图。
---------------------------------------------------------------------------------
将接收器的指定矩形标记为需要重绘。
- (void)setNeedsDisplayInRect:(CGRect)rect;
// rect
将接收机的矩形区域标记为无效;它应该在接收器的坐标系中指定。
// 讨论
您可以使用此方法或setNeedsDisplay来通知系统,视图的内容需要重新绘制。
此方法将指定的矩形添加到视图的当前无效矩形列表中,并立即返回。
视图实际上要到下一个绘图周期才会重新绘制,此时所有失效的视图都会被更新。
您应该使用此方法来请求仅当视图的内容或外观发生更改时才重新绘制视图。
如果只是更改视图的几何形状,通常不会重新绘制视图。
相反,它的现有内容是根据视图的contentMode属性中的值进行调整的。
重新显示现有内容可以避免重新绘制未更改的内容,从而提高性能。
// 请注意
如果视图由CAEAGLLayer对象支持,则此方法无效。
它只适用于使用本地绘图技术(如UIKit和Core Graphics)呈现内容的视图。
---------------------------------------------------------------------------------
应用于视图的缩放因子。
@property(nonatomic) CGFloat contentScaleFactor;
// 讨论
比例因子决定了视图中的内容如何从逻辑坐标空间(以点度量)映射到设备坐标空间(以像素度量)。
这个值通常是1.0或2.0。
更高的比例因子表示视图中的每个点由底层中的多个像素表示。
例如,如果缩放因子为2.0,视图帧大小为50 x 50个点,用于表示该内容的位图的大小为100 x 100像素。
此属性的默认值是与当前显示视图的屏幕相关联的缩放因子。
如果自定义视图实现自定义drawRect:方法并与窗口关联,或者使用GLKView类绘制OpenGL ES内容,则视图将绘制屏幕的全分辨率。
对于系统视图,即使在高分辨率屏幕上,此属性的值也可能是1.0。
通常,您不需要修改此属性中的值。
但是,如果您的应用程序使用OpenGL ES绘图,您可能希望更改缩放因子,以牺牲图像质量来换取呈现性能。
有关如何调整OpenGL ES呈现环境的更多信息,请参阅OpenGL ES编程指南中的支持高分辨率显示。
---------------------------------------------------------------------------------
当tintColor属性发生变化时,由系统调用。
- (void)tintColorDidChange;
// 讨论
当代码更改视图上tintColor属性的值时,系统将对视图调用此方法。
此外,系统在继承更改交互着色颜色的子视图上调用此方法。
在实现中,根据需要刷新视图呈现。

格式化打印视图内容

返回接收视图的打印格式化程序。
- (UIViewPrintFormatter *)viewPrintFormatter;
// 返回值
一个UIViewPrintFormatter对象,如果不能创建对象,则为nil。
如果成功创建,返回的对象将自动与此视图关联。
// 讨论
启动打印作业时,可以调用此方法来为视图获取适当的视图打印格式化程序对象。
您可以使用formatter对象在打印期间为视图配置页面布局选项。
每次调用此方法时,都会得到一个惟一的视图打印格式化程序对象。
有关如何使用打印格式化程序配置视图的打印行为的更多信息,请参见iOS绘图和打印指南。
---------------------------------------------------------------------------------
实现来绘制视图的内容以便打印。
- (void)drawRect:(CGRect)rect forViewPrintFormatter:(UIViewPrintFormatter *)formatter;
// rect
定义用于绘制可打印内容的区域的矩形。
// formatter
通过调用viewPrintFormatter方法获得的UIViewPrintFormatter实例。
// 讨论
如果希望视图的打印内容与显示内容不同,可以实现此方法。
如果将视图打印格式化程序添加到打印作业,但没有实现此方法,则调用视图的drawRect:方法来提供打印内容。
有关如何为打印内容实现自定义绘图例程的更多信息,请参见iOS绘图和打印指南。

手势识别器来管理

将手势识别器附加到视图。
- (void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer;
// gestureRecognizer
类派生自UIGestureRecognizer类的对象。该参数不能为nil。
// 讨论
将手势识别器附加到视图定义所表示手势的范围,使其接收对该视图及其所有子视图的触摸hit-test。
视图建立对手势识别器的强引用。
---------------------------------------------------------------------------------
从接收视图中分离手势识别器。
- (void)removeGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer;
// gestureRecognizer
类派生自UIGestureRecognizer类的对象。
// 讨论
除了从视图中分离外,该方法还释放手势识别器。
---------------------------------------------------------------------------------
当前附加到视图的手势识别器对象。
@property(nonatomic, copy) NSArray<__kindof UIGestureRecognizer *> *gestureRecognizers;
// 讨论
每个对象都是抽象基类UIGestureRecognizer的子类的一个实例。
此属性的默认值为nil。
如果您添加一个手势识别器,然后删除它,该属性的值是一个空数组。
---------------------------------------------------------------------------------
询问视图是否应该允许手势识别器继续跟踪触摸事件。
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer;
// gestureRecognizer
试图从UIGestureRecognizerStatePossible状态转换出来的手势识别器。
// 返回值
如果手势识别器应该继续跟踪触摸事件并使用它们触发手势,则为YES;如果手势识别器应该切换到UIGestureRecognizerStateFailed状态,则为NO。
// 讨论
子类可以覆盖此方法并使用它来防止识别特定的手势。
例如,UISlider类使用此方法来防止与滑块的移动方向平行且从大拇指开始的滑动。
在调用此方法时,手势识别器处于UIGestureRecognizerStatePossible状态,并认为它拥有迁移到UIGestureRecognizerStateBegan状态所需的事件。
此方法的默认实现返回YES。

观察重点

一个布尔值,指示当前视图是否能够被聚焦。
@property(nonatomic, readonly) BOOL canBecomeFocused;
// 讨论
如果视图可以聚焦,则此属性的值为YES;没有否则。
默认情况下,此属性的值为NO。
如果视图能够被聚焦,则此属性通知焦点引擎。
有时,即使视图返回YES,视图也可能由于以下原因不可调焦:
1、视图是隐藏的。
2、视图的alpha值设为0。
3、视图将userInteractionEnabled设置为NO。
4、视图当前不在视图层次结构中。
---------------------------------------------------------------------------------
返回当前动画的继承持续时间。
@property(class, nonatomic, readonly) NSTimeInterval inheritedAnimationDuration;
// 返回值
当前动画的持续时间。
// 讨论
这个方法只在UIView动画块中调用时返回一个非零值。
---------------------------------------------------------------------------------
一个布尔值,指示当前项是否集中。
@property(readonly, nonatomic, getter=isFocused) BOOL focused;
// 讨论
这是一个方便的属性,用于检查项目是否等于UIScreen类的focusedView属性中的值。

使用运动效果

开始对视图应用运动效果。
- (void)addMotionEffect:(UIMotionEffect *)effect;
// effect
运动的效果。
// 讨论
系统使用当前的UIView动画上下文将转换动画到运动效果的值。
运动效果的键路径/值对应用于视图的表示层。
---------------------------------------------------------------------------------
视图的运动效果数组。
@property(copy, nonatomic) NSArray<__kindof UIMotionEffect *> *motionEffects;
---------------------------------------------------------------------------------
// 停止对视图应用运动效果。
- (void)removeMotionEffect:(UIMotionEffect *)effect;
// motionEffects
运动的效果。
// 讨论
任何受影响的表示值都会使用当前的UIView动画上下文动画到它们的删除后值。

保存和恢复状态

确定视图是否支持状态恢复的标识符。
@property(nonatomic, copy) NSString *restorationIdentifier;
// 讨论
此属性指示是否应保存视图中的状态信息;它还用于在恢复过程中标识视图。
默认情况下,此属性的值为nil,这表示不需要保存视图的状态。
将string对象分配给属性,让拥有视图控制器知道视图有相关的状态信息要保存。
只有在实现实现encodeRestorableStateWithCoder:和decodeRestorableStateWithCoder:保存和恢复状态的方法的自定义视图时,才为该属性赋值。
您可以使用这些方法来编写任何特定于视图的状态信息,然后使用这些数据将视图恢复到以前的配置。
// 重要的
仅设置此属性的值不足以确保保存和恢复视图。
它所拥有的视图控制器,以及该视图控制器的所有父视图控制器,也必须有一个恢复标识符。
有关保存和修复过程的更多信息,请参见App Programming Guide for iOS。
---------------------------------------------------------------------------------
为视图编码与状态相关的信息。
- (void)encodeRestorableStateWithCoder:(NSCoder *)coder;
// coder
要用于编码视图状态的coder对象。
// 讨论
如果您的应用程序支持状态保存,您可以对任何视图覆盖此方法,这些视图具有在应用程序启动期间应该保存的状态信息。
您应该只保存将视图返回到当前配置所需的数据。
不要保存视图对象本身,也不要保存在启动时可能由其他方法确定的任何数据。
很少有视图需要保存状态信息。
大多数视图应该使用视图控制器中的数据来配置。
但是,对于那些具有用户可配置状态的视图,这种方法是可用的,否则在应用程序启动之间会丢失这些视图。
此方法的实现可以编码它需要引用的其他可恢复视图和视图控制器对象。
可恢复视图或视图控制器的编码将该对象的恢复标识符写入编码器。
(该标识符在解码过程中用于定位对象的新版本。)
如果视图或视图控制器定义了它自己的这个方法版本,那么在某个时候也会调用那个方法,以便对象可以编码它自己的状态。
除了视图和视图控制器,
其他对象遵循正常的序列化过程,并且在编码之前必须采用NSCoding协议。
对这些对象进行编码可以直接将对象的内容嵌入到存档中。
在解码过程中,使用存档中的数据创建并初始化一个新对象。
建议您在实现过程中调用super,让父类有机会保存它们的状态信息。
---------------------------------------------------------------------------------
解码并恢复视图的状态相关信息。
- (void)decodeRestorableStateWithCoder:(NSCoder *)coder;
// coder
用于解码视图状态的编码器对象。
// 讨论
如果你的应用程序支持状态恢复,你应该为任何视图覆盖这个方法,你也覆盖encodeRestorableStateWithCoder:方法。
此方法的实现应该使用任何保存的状态信息来将视图恢复到以前的配置。
如果你的encodeRestorableStateWithCoder:方法调用super,这个方法应该在它的实现中调用super。

捕获视图快照

根据当前视图的内容返回快照视图。
- (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates;
// afterUpdates
一个布尔值,指定在合并了最近的更改之后是否应该捕获快照。
传递值NO以捕获当前状态的屏幕,该状态可能不包括最近的更改。
// 返回值
基于当前视图呈现内容快照的新视图对象。
// 讨论
该方法非常有效地捕获视图当前呈现的外观,并使用它构建一个新的快照视图。
您可以使用返回的视图作为应用程序中当前视图的可视替代品。
因为内容是从已呈现的内容中捕获的,所以此方法反映视图的当前可视外观,并且不会更新以反映已计划或正在进行的动画。
但是,调用此方法比自己尝试将当前视图的内容呈现为位图图像要快。
因为返回的快照是一个视图对象,您可以根据需要修改它及其层对象。
但是,您不能更改快照视图层的contents属性;这样做的尝试无声无息地失败了。
如果当前视图还没有呈现,可能是因为它还没有显示在屏幕上,快照视图就没有可见的内容。
您可以在以前生成的快照上调用此方法来获得新的快照。
例如,您可以在更改前一个快照的属性(例如它的alpha值)并希望包含这些更改的新快照之后这样做。
如果您想对快照应用图形化效果,例如blur,请使用drawViewHierarchyInRect:afterScreenUpdates:方法。
---------------------------------------------------------------------------------
返回基于当前视图的指定内容的快照视图,其中包含可伸缩的insets。
- (UIView *)resizableSnapshotViewFromRect:(CGRect)rect afterScreenUpdates:(BOOL)afterUpdates withCapInsets:(UIEdgeInsets)capInsets;
// rect
要捕获的视图的一部分。
矩形必须位于当前视图的边界坐标空间中。
// afterUpdates
一个布尔值,指定在合并了最近的更改之后是否应该捕获快照。
如果希望捕获当前状态的屏幕(可能不包括最近的更改),请传递值NO。
// capInsets
定义返回视图内容的可伸缩部分的边缘插入。
如果不希望返回视图的内容具有可伸缩区域,可以指定UIEdgeInsetsZero。
// 返回值
包含当前视图呈现内容快照的新视图对象。
// 讨论
该方法非常有效地捕获视图当前呈现的外观,并使用它构建具有可伸缩insets的新快照视图。
您可以使用返回的视图作为应用程序中当前视图的可视替代品。
因为内容是从已呈现的内容中捕获的,所以此方法反映视图的当前可视外观,并且不会更新以反映已计划或正在进行的动画。
但是,调用此方法比自己尝试将当前视图的内容呈现为位图图像要快。
因为返回的快照是一个视图对象,您可以根据需要修改它及其层对象。
但是,您不能更改快照视图层的contents属性;这样做的尝试无声无息地失败了。
如果当前视图还没有呈现,可能是因为它还没有显示在屏幕上,快照视图就没有可见的内容。
您可以在以前生成的快照上调用此方法来获得新的快照。
例如,您可以在更改前一个快照的属性(例如它的alpha值)并希望包含这些更改的新快照之后这样做。
如果您想对快照应用图形化效果,例如blur,请使用drawViewHierarchyInRect:afterScreenUpdates:方法。
如果在capInsets参数中指定非零边缘插入,这些值将确定返回快照的可伸缩内容区域。
---------------------------------------------------------------------------------
将完整视图层次结构的快照在屏幕上显示为当前上下文中可见。
- (BOOL)drawViewHierarchyInRect:(CGRect)rect afterScreenUpdates:(BOOL)afterUpdates;
// rect
在视图的局部坐标系(界限)中指定的矩形。
// afterUpdates
一个布尔值,指示在合并了最近的更改之后是否应该呈现快照。
如果您想在视图层次结构的当前状态中呈现快照(可能不包括最近的更改),请指定值NO。
// 返回值
如果快照已完成,则返回YES;如果快照缺少层次结构中任何视图的图像数据,则返回NO。
// 讨论
当您想对视图快照应用图形效果(如模糊)时,请使用此方法。
这个方法不如snapshotViewAfterScreenUpdates:方法快。

在运行时标识视图

可用于标识应用程序中的视图对象的整数。
@property(nonatomic) NSInteger tag;
// 讨论
默认值为0。
您可以设置此标记的值,并在稍后使用该值来标识视图。
---------------------------------------------------------------------------------
返回标记与指定值匹配的视图。
- (__kindof UIView *)viewWithTag:(NSInteger)tag;
// tag
要搜索的标记值。
// 返回值
接收方层次结构中的视图,其标记属性与标记参数中的值匹配。
// 讨论
此方法搜索指定视图的当前视图及其所有子视图。

视图坐标系统之间的转换

将一个点从接收方的坐标系统转换为指定视图的坐标系统。
- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view;
// point
在接收机的局部坐标系(界限)中指定的点。
// view
要转换为其坐标系点的视图。
如果view为nil,则此方法将转换为窗口基坐标。
否则,视图和接收者必须属于同一个UIWindow对象。
// 返回值
这个点转换成视图的坐标系。
---------------------------------------------------------------------------------
将一个点从给定视图的坐标系转换为接收器的坐标系。
- (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view;
// point
在视图的局部坐标系(界限)中指定的点。
// view
在它的坐标系中有点的视图。
如果view为nil,则此方法将从窗口基坐标转换。
否则,视图和接收者必须属于同一个UIWindow对象。
// 返回值
转换到接收机的局部坐标系(界限)的点。
---------------------------------------------------------------------------------
将矩形从接收方的坐标系统转换为另一个视图的坐标系统。
- (CGRect)convertRect:(CGRect)rect toView:(UIView *)view;
// rect
在接收机的局部坐标系(界限)中指定的矩形。
// view
转换操作的目标视图。
如果view为nil,则此方法将转换为窗口基坐标。
否则,视图和接收者必须属于同一个UIWindow对象。
// 返回值
转换后的矩形。
---------------------------------------------------------------------------------
将矩形从另一个视图的坐标系转换为接收器的坐标系。
- (CGRect)convertRect:(CGRect)rect fromView:(UIView *)view;
// rect
在视图的局部坐标系(界限)中指定的矩形。
// view
在其坐标系中包含rect的视图。
如果view为nil,则此方法将从窗口基坐标转换。
否则,视图和接收者必须属于同一个UIWindow对象。
// 返回值
转换后的矩形。

Hit Testing in a View

返回包含指定点的视图层次结构(包括其本身)中接收器的最远后裔。
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event;
// point
在接收机的局部坐标系(界限)中指定的点。
// event
需要调用此方法的事件。
如果从事件处理代码外部调用此方法,可以指定nil。
// 返回值
视图对象,它是当前视图的最远派生并包含点。
如果该点完全位于接收方视图层次结构之外,则返回nil。
// 讨论
该方法通过调用每个子视图的pointInside:withEvent:方法遍历视图层次结构,以确定哪个子视图应该接收触摸事件。
如果pointInside:withEvent:返回YES,则同样遍历子视图的层次结构,直到找到包含指定点的最前端视图为止。
如果视图不包含该点,则忽略其视图层次结构的分支。
您很少需要自己调用这个方法,但是您可以覆盖它来对子视图隐藏触摸事件。
此方法忽略隐藏的视图对象、已禁用用户交互的视图对象或alpha值小于0.01的视图对象。
此方法在确定命中时不考虑视图的内容。
因此,即使指定的点位于视图内容的透明部分,仍然可以返回视图。
位于接收者边界之外的点永远不会被报告为命中,即使它们实际上位于接收者的子视图之一。
如果当前视图的clipsToBounds属性被设置为NO,并且受影响的子视图超出了视图的边界,就会发生这种情况。
---------------------------------------------------------------------------------
返回一个布尔值,该值指示接收器是否包含指定的点。
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event;
// point
在接收机的局部坐标系(界限)中的点。
// event
需要调用此方法的事件。
如果从事件处理代码外部调用此方法,可以指定nil。
// 返回值
是的,如果点在接收器的范围内;否则,没有。

结束视图编辑会话

导致视图(或其嵌入的textField之一)辞去first responder状态。
- (BOOL)endEditing:(BOOL)force;
// force
指定YES以强制第一个响应程序辞职,无论它是否愿意这样做。
// 返回值
如果视图退出了第一个响应者状态,则为YES;如果没有,则为NO。
// 讨论
该方法查看当前视图及其子视图层次结构,用于当前为第一个响应器的文本字段。
如果找到一个,它会要求该文本字段辞去第一响应器的角色。
如果force参数设置为YES,文本字段甚至不会被询问;它被迫辞职。

修改可访问性行为

一个布尔值,指示视图是否忽略可访问性请求以反转其颜色。
@property(nonatomic) BOOL accessibilityIgnoresInvertColors;
// 讨论
反色常被用来帮助对光线或颜色敏感的用户使明亮的颜色变暗。
然而,这种行为会对图像和视频产生破坏性的影响。
如果反转颜色会对视图的内容产生负面影响,请将此属性设置为YES,以防止它反转颜色。
将属性设置为YES可以防止系统反转视图及其所有子视图的颜色。

用块对象动画视图
不鼓励使用这些方法。而是使用UIViewPropertyAnimator类来执行动画。

使用指定的持续时间、延迟、选项和完成处理程序对一个或多个视图进行动画更改。
+ (void)animateWithDuration:(NSTimeInterval)duration 
                      delay:(NSTimeInterval)delay 
                    options:(UIViewAnimationOptions)options 
                 animations:(void (^)(void))animations 
                 completion:(void (^)(BOOL finished))completion;
// duration
动画的总持续时间,以秒为单位度量。
如果您指定一个负值或0,则更改将在不进行动画的情况下进行。
// delay
在开始动画之前等待的时间(以秒为单位)。
指定一个值0立即开始动画。
// options
一个选项掩码,指示您希望如何执行动画。
有关有效常量的列表,请参见UIViewAnimationOptions。
// animations
包含要提交给视图的更改的块对象。
这是通过编程更改视图层次结构中视图的任何可动画属性的地方。
此块不接受任何参数,也没有返回值。该参数不能为空。
// completion
动画序列结束时要执行的块对象。
此块没有返回值,并接受一个布尔参数,该参数指示动画是否在调用completionhandler之前实际完成。
如果动画的持续时间为0,则在下一个运行循环周期开始时执行此块。
这个参数可以为空。
// 讨论
此方法启动一组动画,以便在视图上执行。
animation参数中的block对象包含用于动画一个或多个视图属性的代码。
在动画期间,将暂时禁用正在动画的视图的用户交互。(在iOS 5之前,整个应用程序都禁止用户交互。)
如果希望用户能够与视图交互,请在options参数中包含UIViewAnimationOptionAllowUserInteraction常量。
---------------------------------------------------------------------------------
使用指定的持续时间和完成处理程序对一个或多个视图进行动画更改。
+ (void)animateWithDuration:(NSTimeInterval)duration 
                 animations:(void (^)(void))animations 
                 completion:(void (^)(BOOL finished))completion;
// duration
动画的总持续时间,以秒为单位度量。
如果您指定一个负值或0,则更改将在不进行动画的情况下进行。
// animations
包含要提交给视图的更改的块对象。这是通过编程更改视图层次结构中视图的任何可动画属性的地方。此块不接受任何参数,也没有返回值。该参数不能为空。
// completion
动画序列结束时要执行的块对象。
此块没有返回值,并接受一个布尔参数,该参数指示动画是否在调用completionhandler之前实际完成。
如果动画的持续时间为0,则在下一个运行循环周期开始时执行此块。
这个参数可以为空。
// 讨论
该方法使用UIViewAnimationOptionCurveEaseInOut和UIViewAnimationOptionTransitionNone动画选项立即执行指定的动画。
例如,如果你想淡入一个视图直到它完全透明,然后从你的视图层次结构中删除它,你可以使用如下代码:
[UIView animateWithDuration:0.2
                 animations:^{view.alpha = 0.0;}
                 completion:^(BOOL finished){ [view removeFromSuperview]; }];
在动画期间,将暂时禁用正在动画的视图的用户交互。
(在iOS 5之前,整个应用程序都禁止用户交互。)
---------------------------------------------------------------------------------
使用指定的持续时间对一个或多个视图进行动画更改。
+ (void)animateWithDuration:(NSTimeInterval)duration 
                 animations:(void (^)(void))animations;
// duration
动画的总持续时间,以秒为单位度量。
如果您指定一个负值或0,则更改将在不进行动画的情况下进行。
// animations
包含要提交给视图的更改的块对象。这是通过编程更改视图层次结构中视图的任何可动画属性的地方。此块不接受任何参数,也没有返回值。该参数不能为空。
// 讨论
该方法使用UIViewAnimationOptionCurveEaseInOut和UIViewAnimationOptionTransitionNone动画选项立即执行指定的动画。
在动画期间,将暂时禁用正在动画的视图的用户交互。
(在iOS 5之前,整个应用程序都禁止用户交互。)
---------------------------------------------------------------------------------
为指定的容器视图创建转换动画。
+ (void)transitionWithView:(UIView *)view 
                  duration:(NSTimeInterval)duration 
                   options:(UIViewAnimationOptions)options 
                animations:(void (^)(void))animations 
                completion:(void (^)(BOOL finished))completion;
// view
执行转换的容器视图。
// duration
转换动画的持续时间,以秒为单位度量。
如果指定负值或0,则转换将在没有动画的情况下进行。
// options
一个选项掩码,指示您希望如何执行动画。
有关有效常量的列表,请参见UIViewAnimationOptions。
// animations
包含要对指定视图进行更改的块对象。
此块不接受任何参数,也没有返回值。
该参数不能为空。
// completion
动画序列结束时要执行的块对象。
此块没有返回值,并接受一个布尔参数,该参数指示动画是否在调用completionhandler之前实际完成。
如果动画的持续时间为0,则在下一个运行循环周期开始时执行此块。
这个参数可以为空。
// 讨论
此方法应用到指定视图的转换,以便您可以对其进行状态更改。
在animation参数中指定的块包含您想要进行的任何状态更改。
可以使用此块添加、删除、显示或隐藏指定视图的子视图。
如果您想合并其他可动画的更改,您必须在options参数中包含UIViewAnimationOptionAllowAnimatedContent键。
下面的代码为指定的容器视图创建翻转转换。
在转换的适当位置,将删除一个子视图,并将另一个子视图添加到容器视图。
这让它看起来像是一个新视图被新子视图翻转到合适的位置,但实际上它只是一个相同的视图动画回到合适的位置与一个新的配置。
[UIView transitionWithView:containerView
                  duration:0.2
                   options:UIViewAnimationOptionTransitionFlipFromLeft
                animations:^{ [fromView removeFromSuperview]; [containerView addSubview:toView]; }
                completion:NULL];
在动画期间,将暂时禁用正在动画的视图的用户交互。
(在iOS 5之前,整个应用程序都禁止用户交互。)
如果希望用户能够与视图交互,请在options参数中包含UIViewAnimationOptionAllowUserInteraction常量。
---------------------------------------------------------------------------------
使用给定参数在指定视图之间创建转换动画。
+ (void)transitionFromView:(UIView *)fromView 
                    toView:(UIView *)toView 
                  duration:(NSTimeInterval)duration 
                   options:(UIViewAnimationOptions)options 
                completion:(void (^)(BOOL finished))completion;
// fromView
转换的起始视图。
默认情况下,这个视图作为转换的一部分从父视图中删除。
// toView
转换的结束视图。
默认情况下,这个视图作为转换的一部分添加到fromView的父视图中。
// duration
转换动画的持续时间,以秒为单位度量。
如果指定负值或0,则转换将在没有动画的情况下进行。
// options
一个选项掩码,指示您希望如何执行动画。
有关有效常量的列表,请参见UIViewAnimationOptions。
// completion
动画序列结束时要执行的块对象。
此块没有返回值,并接受一个布尔参数,该参数指示动画是否在调用completionhandler之前实际完成。
如果动画的持续时间为0,则在下一个运行循环周期开始时执行此块。
这个参数可以为空。
// 讨论
该方法提供了一种简单的方法,可以将fromView参数中的视图转换为toView参数中的视图。
默认情况下,视图层次结构中的fromView被toView中的视图替换。
如果两个视图都已经是视图层次结构的一部分,您可以在options参数中包含UIViewAnimationOptionShowHideTransitionViews选项来隐藏或显示它们。
此方法只修改视图层次结构中的视图。
它不会以任何方式修改应用程序的视图控制器。
例如,如果您使用此方法更改视图控制器显示的根视图,则您有责任适当地更新视图控制器以处理更改。
视图转换立即启动,除非另一个动画已经在运行中,在这种情况下,它在当前动画完成后立即启动。
在动画期间,将暂时禁用正在动画的视图的用户交互。
(在iOS 5之前,整个应用程序都禁止用户交互。)
如果希望用户能够与视图交互,请在options参数中包含UIViewAnimationOptionAllowUserInteraction常量。
---------------------------------------------------------------------------------
+ (void)animateKeyframesWithDuration:(NSTimeInterval)duration 
                               delay:(NSTimeInterval)delay 
                             options:(UIViewKeyframeAnimationOptions)options 
                          animations:(void (^)(void))animations 
                          completion:(void (^)(BOOL finished))completion;
// duration
整个动画的持续时间,以秒为单位度量。
如果指定负值或0,则立即进行更改,并且不使用动画。
// delay
指定在启动动画之前等待的时间(以秒为单位)。
// options
一个选项掩码,指示您希望如何执行动画。
有关有效常量的列表,请参见UIViewKeyframeAnimationOptions。
// animations
包含要提交给视图的更改的块对象。
通常,从这个块中调用addKeyframeWithRelativeStartTime:relativeDuration:animation: method一次或多次。
如果您希望这些更改在整个过程中都具有动画效果,还可以直接更改视图值。
此块不接受任何参数,也没有返回值。
不要为这个参数使用nil值。
// completion
动画序列结束时要执行的块对象。
此块没有返回值,并接受一个布尔参数,该参数指示动画是否在调用completionhandler之前完成。
如果动画的持续时间为0,则在下一个运行循环周期开始时执行此块。
您可以为该参数使用nil值。
// 讨论
此方法创建一个动画块,您可以使用该动画块设置基于keyframe的动画。
关键帧本身不是使用此方法创建的初始动画块的一部分。
在动画块中,您必须通过调用addKeyframeWithRelativeStartTime:relativeDuration:animation: method一次或多次来添加关键帧时间和动画数据。
添加关键帧会使动画将视图从当前值转换为第一个关键帧的值,然后转换为下一个关键帧的值,依此类推。
如果您没有在动画块中添加任何关键帧,动画将像标准动画块一样从头到尾进行。
换句话说,系统在指定的持续时间内从当前视图值动画到任何新值。
---------------------------------------------------------------------------------
指定关键帧动画的单个帧的时间和动画值。
+ (void)addKeyframeWithRelativeStartTime:(double)frameStartTime 
                        relativeDuration:(double)frameDuration 
                              animations:(void (^)(void))animations;
// frameStartTime
开始指定动画的时间。
这个值必须在0到1之间,其中0表示整个动画的开始,1表示整个动画的结束。
例如,对于持续时间为2秒的动画,将起始时间指定为0.5会导致动画在整个动画开始一秒后开始执行。
// frameDuration
动画到指定值的时间长度。
这个值必须在0到1之间,并表示相对于整个动画长度的时间量。
如果指定值为0,则在动画块中设置的任何属性都会在指定的开始时间立即更新。
如果指定非零值,属性将在该时间内进行动画。
例如,对于持续时间为2秒的动画,指定持续时间0.5将导致动画持续时间为1秒。
// animations
包含要执行的动画的块对象。
这是通过编程更改视图层次结构中视图的任何可动画属性的地方。
此块不接受任何参数,也没有返回值。该参数不能为nil。
// 讨论
要在关键帧动画期间动画视图属性,从传递给animateKeyframesWithDuration:delay:options:animation:completion:方法的动画块中调用此方法。
要在不同的值之间进行动画,或调整视图属性动画的计时,可以在一个块内多次调用此方法。
在动画块中更改的视图属性在frameDuration参数中指定的时间范围内进行动画。
属性直到在frameStartTime参数中指定的时间才开始动画。
在帧开始时间之后,动画在指定的持续时间内执行,或者直到被另一个动画中断。
---------------------------------------------------------------------------------
在一个或多个视图上执行指定的系统提供的动画,以及定义的可选并行动画。
+ (void)performSystemAnimation:(UISystemAnimation)animation
                       onViews:(NSArray<__kindof UIView *> *)views 
                       options:(UIViewAnimationOptions)options 
                    animations:(void (^)(void))parallelAnimations 
                    completion:(void (^)(BOOL finished))completion;
// animation
系统动画执行;一个来自UISystemAnimation枚举的常量。
// views
执行动画的视图。
// options
一个选项掩码,指示您希望如何执行动画。
有关有效常量的列表,请参见UIViewAnimationOptions。
// parallelAnimations
指定与系统动画一起运行的附加动画,具有与系统动画定义或继承的相同的时间和持续时间。
在其他动画中,不要修改正在执行系统动画的视图的属性。
// completion
动画序列结束时要执行的块对象。
单个布尔参数指示动画是否在调用completionhandler之前完成。
如果动画持续时间为0,则在下一个运行循环周期开始时执行此块。
您可以为该参数使用nil值。
---------------------------------------------------------------------------------
使用与物理弹簧运动相对应的计时曲线执行视图动画。
+ (void)animateWithDuration:(NSTimeInterval)duration 
                      delay:(NSTimeInterval)delay 
     usingSpringWithDamping:(CGFloat)dampingRatio 
      initialSpringVelocity:(CGFloat)velocity 
                    options:(UIViewAnimationOptions)options
                 animations:(void (^)(void))animations 
                 completion:(void (^)(BOOL finished))completion;
// duration
动画的总持续时间,以秒为单位度量。
如果您指定一个负值或0,则更改将在不进行动画的情况下进行。
// delay
在开始动画之前等待的时间(以秒为单位)。指定一个值0立即开始动画。
// dampingRatio
弹簧在接近静止状态时的阻尼比。
要使动画平稳减速而不振荡,使用值1。
采用接近零的阻尼比来增加振荡。
// velocity
初始弹簧速度。
要使动画顺利启动,请将此值与视图在附件之前的速度匹配。
值1对应于在一秒内遍历的动画总距离。
例如,如果动画总距离为200点,并且您希望动画的开始匹配100 pt/s的视图速度,则使用0.5的值。
// options
一个选项掩码,指示您希望如何执行动画。有关有效常量的列表,请参见UIViewAnimationOptions。
// animations
包含要提交给视图的更改的块对象。
这是通过编程更改视图层次结构中视图的任何可动画属性的地方。
此块不接受任何参数,也没有返回值。
该参数不能为空。
// completion
动画序列结束时要执行的块对象。
此块没有返回值,并接受一个布尔参数,该参数指示动画是否在调用completionhandler之前实际完成。
如果动画的持续时间为0,则在下一个运行循环周期开始时执行此块。
这个参数可以为空。
---------------------------------------------------------------------------------
禁用视图转换动画。
+ (void)performWithoutAnimation:(void (^)(void))actionsWithoutAnimation;
// actionsWithoutAnimation
要在没有动画的情况下执行的视图转换代码。

Constants

使用块对象动画视图的选项。
typedef enum UIViewAnimationOptions : NSUInteger {
    ...
} UIViewAnimationOptions;
UIViewAnimationOptionLayoutSubviews 
在提交时列出子视图,以便它们与父视图一起被动画化。
UIViewAnimationOptionAllowUserInteraction 
允许用户在视图被动画化时与视图交互。
UIViewAnimationOptionBeginFromCurrentState
从与已在飞行中的动画关联的当前设置启动动画。
UIViewAnimationOptionRepeat
无限重复动画。
UIViewAnimationOptionAutoreverse
前后运行动画(必须与repeat选项结合使用)。
UIViewAnimationOptionOverrideInheritedDuration
强制动画使用提交动画时指定的原始持续时间值。
UIViewAnimationOptionOverrideInheritedCurve
强制动画使用提交动画时指定的原始曲线值。
UIViewAnimationOptionAllowAnimatedContent
通过动态更改属性值并重新绘制视图,使视图具有动画效果。
UIViewAnimationOptionShowHideTransitionViews
在视图转换期间隐藏或显示视图。
UIViewAnimationOptionOverrideInheritedOptions
不继承动画类型或任何选项的选项。
UIViewAnimationOptionCurveEaseInOut
指定一个ease-in - ease-out曲线,它使动画开始缓慢,在持续时间的中间加速,然后在完成之前再次慢下来。
UIViewAnimationOptionCurveEaseIn
一个容易进入的曲线使动画开始缓慢,然后随着它的进展加快。
UIViewAnimationOptionCurveEaseOut
缓和曲线使动画快速开始,然后在完成时变慢。
UIViewAnimationOptionCurveLinear
线性动画曲线使动画在其持续时间内均匀地发生。
UIViewAnimationOptionTransitionNone
没有指定转换。
UIViewAnimationOptionTransitionFlipFromLeft
将视图围绕其垂直轴从左到右翻转的过渡(视图的左侧移动到前面,右侧移动到后面)。
UIViewAnimationOptionTransitionFlipFromRight
将视图围绕其垂直轴从右向左翻转的过渡(视图的右侧移动到前面,左侧移动到后面)。
UIViewAnimationOptionTransitionCurlUp
从底部向上弯曲视图的过渡。
UIViewAnimationOptionTransitionCurlDown
从顶部向下弯曲视图的过渡。
UIViewAnimationOptionTransitionCrossDissolve
从一个视图到下一个视图的转换。
UIViewAnimationOptionTransitionFlipFromTop
将视图围绕其水平轴从上到下翻转的过渡(视图的顶部移动到前面,底部移动到后面)。
UIViewAnimationOptionTransitionFlipFromBottom
将视图围绕其水平轴从底部翻转到顶部的过渡(视图的底部移动到前面,顶部移动到后面)。
UIViewAnimationOptionPreferredFramesPerSecondDefault
每秒默认帧数。
UIViewAnimationOptionPreferredFramesPerSecond30
帧速率为每秒30帧。
UIViewAnimationOptionPreferredFramesPerSecond60
帧速率为每秒60帧。
---------------------------------------------------------------------------------
指定支持的动画曲线。
typedef enum UIViewAnimationCurve : NSInteger {
    ...
} UIViewAnimationCurve;
UIViewAnimationCurveEaseInOut
放松-进入-退出曲线使动画开始缓慢,在其持续时间中间加速,然后在完成之前再次减速。这是大多数动画的默认曲线。
UIViewAnimationCurveEaseIn
一个容易进入的曲线使动画开始缓慢,然后随着它的进展加快。
UIViewAnimationCurveEaseOut
缓和曲线使动画快速开始,然后在完成时放慢速度。
UIViewAnimationCurveLinear
线性动画曲线使动画在其持续时间内均匀地发生。
---------------------------------------------------------------------------------
动画块对象中使用的动画转换选项。
typedef enum UIViewAnimationTransition : NSInteger {
    ...
} UIViewAnimationTransition;
UIViewAnimationTransitionNone
指示未指定任何转换的选项。
UIViewAnimationTransitionFlipFromLeft
将视图从左到右沿垂直轴翻转的过渡。视图的左侧移动到前面,右侧移动到后面。
UIViewAnimationTransitionFlipFromRight
将视图围绕垂直轴从右向左翻转的过渡。视图的右侧移动到前面,左侧移动到后面。
UIViewAnimationTransitionCurlUp
从底部向上弯曲视图的过渡。
UIViewAnimationTransitionCurlDown
从顶部向下弯曲视图的过渡。
---------------------------------------------------------------------------------
选项,以在动画完成时从层次结构中删除视图。
typedef enum UISystemAnimation : NSUInteger {
    ...
} UISystemAnimation;
UISystemAnimationDelete
选择在动画完成时从视图层次结构中删除视图。
---------------------------------------------------------------------------------
与animateKeyframesWithDuration:delay:options:animation:completion: method一起使用的关键帧动画选项。
typedef enum UIViewKeyframeAnimationOptions : NSUInteger {
    ...
} UIViewKeyframeAnimationOptions;
UIViewKeyframeAnimationOptionLayoutSubviews
在提交时布局子视图的选项,以便它们与父视图一起被动画化。
UIViewKeyframeAnimationOptionAllowUserInteraction
允许用户在视图被动画化时与视图交互的选项。
UIViewKeyframeAnimationOptionBeginFromCurrentState
从与已在飞行中的动画关联的当前设置启动动画的选项。
如果不提供此选项,则允许任何飞行中的动画在新动画启动之前完成。
如果另一个动画没有在飞行中,这个选项没有效果。
UIViewKeyframeAnimationOptionRepeat
无限重复动画的选项。
UIViewKeyframeAnimationOptionAutoreverse
前后运行动画的选项。必须与UIViewKeyframeAnimationOptionRepeat选项组合。
UIViewKeyframeAnimationOptionOverrideInheritedDuration
强制动画使用提交动画时指定的原始持续时间值的选项。
如果不存在此选项,则动画将继承飞行中动画的剩余持续时间(如果有的话)。
UIViewKeyframeAnimationOptionOverrideInheritedOptions
不继承动画类型或任何选项的选项。
UIViewKeyframeAnimationOptionCalculationModeLinear
在关键帧值之间插入时使用简单线性计算的选项。
UIViewKeyframeAnimationOptionCalculationModeDiscrete
不插入关键帧值之间的选项,而是直接跳转到每个新的关键帧值。
UIViewKeyframeAnimationOptionCalculationModePaced
使用简单的定速算法计算中间关键帧值的选项。
此选项将生成均匀节奏的动画。
UIViewKeyframeAnimationOptionCalculationModeCubic
使用传递关键帧值的默认Catmull-Rom样条曲线计算中间帧的选项。
你不能调整这个算法的参数。
UIViewKeyframeAnimationOptionCalculationModeCubicPaced
使用立方格式计算中间帧的选项,同时忽略动画的计时属性。
相反,定时参数是隐式计算的,以给动画一个恒定的速度。
---------------------------------------------------------------------------------
指定对象之间的水平或垂直布局约束的键。
typedef enum UILayoutConstraintAxis : NSInteger {
    ...
} UILayoutConstraintAxis;
UILayoutConstraintAxisHorizontal
在布局对象之间的水平关系时应用的约束。
UILayoutConstraintAxisVertical
在布局对象之间的垂直关系时应用的约束。
---------------------------------------------------------------------------------
视图的色调调整模式。
typedef enum UIViewTintAdjustmentMode : NSInteger {
    ...
} UIViewTintAdjustmentMode;
UIViewTintAdjustmentModeAutomatic
视图的色调调整模式与其父视图的色调调整模式相同(如果视图没有父视图,则uiviewtintmentmodenormal)。
UIViewTintAdjustmentModeNormal
视图的tintColor属性返回视图的完全未修改的着色颜色。
UIViewTintAdjustmentModeDimmed
视图的tintColor属性返回视图原始色调的去饱和、调暗版本。
---------------------------------------------------------------------------------
使用尽可能小的size的选项。
const CGSize UILayoutFittingCompressedSize;
---------------------------------------------------------------------------------
使用最大可能size的选项。
const CGSize UILayoutFittingExpandedSize;
---------------------------------------------------------------------------------
给定数值view属性缺乏内在度量。
const CGFloat UIViewNoIntrinsicMetric;
---------------------------------------------------------------------------------
自动视图调整大小的选项。
typedef enum UIViewAutoresizing : NSUInteger {
    ...
} UIViewAutoresizing;
UIViewAutoresizingNone
指示视图不调整大小的选项。
UIViewAutoresizingFlexibleLeftMargin
通过在左边缘方向上展开或收缩视图来调整大小。
UIViewAutoresizingFlexibleWidth
通过扩展或收缩视图的宽度来调整大小。
UIViewAutoresizingFlexibleRightMargin
通过在右边框方向上展开或收缩视图来调整大小。
UIViewAutoresizingFlexibleTopMargin
通过在顶部边缘方向上展开或收缩视图来调整大小。
UIViewAutoresizingFlexibleHeight
通过扩大或缩小视图的高度来调整大小。
UIViewAutoresizingFlexibleBottomMargin
调整大小,按底部边缘的方向展开或收缩视图。
---------------------------------------------------------------------------------
视图内容的语义描述,用于确定在从左到右和从右到左的布局之间切换时是否应该翻转视图。
typedef enum UISemanticContentAttribute : NSInteger {
    ...
} UISemanticContentAttribute;
UISemanticContentAttributeUnspecified
视图的默认值。在从左到右和从右到左的布局之间切换时,视图会翻转。
UISemanticContentAttributePlayback
表示回放控件的视图,如播放、倒带或快进按钮或播放头洗涤器。在从左到右和从右到左的布局之间切换时,不会翻转这些视图。
UISemanticContentAttributeSpatial
表示方向控制的视图,如用于文本对齐的段控制或用于游戏的D-pad控制。在从左到右和从右到左的布局之间切换时,不会翻转这些视图。
UISemanticContentAttributeForceLeftToRight
始终使用从左到右布局显示的视图。
UISemanticContentAttributeForceRightToLeft
始终使用从右到左的布局显示的视图。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容