自动尺寸调整行为
当您改变视图的边框矩形时,其内嵌子视图的位置和尺寸往往也需要改变,以适应原始视图的新尺寸。如果视图的autoresizesSubviews属性声明被设置为YES,则其子视图会根据autoresizingMask属性的值自动进行尺寸调整。简单配置一下视图的自动尺寸调整掩码常常就能使应用程序得到合适的行为;否则,应用程序就必须通过重载layoutSubviews方法来提供自己的实现。
设置视图的自动尺寸调整行为的方法是通过位OR操作符将期望的自动尺寸调整常量连结起来,并将结果赋值给视图的autoresizingMask属性。表2-1列举了自动尺寸调整常量,并描述这些常量如何影响给定视图的尺寸和位置。举例来说,如果要使一个视图和其父视图左下角的相对位置保持不变,可以加入UIViewAutoresizingFlexibleRightMargin和UIViewAutoresizingFlexibleTopMargin常量,并将结果赋值给autoresizingMask属性。当同一个轴向有多个部分被设置为可变时,尺寸调整的裕量会被平均分配到各个部分上。
UIViewAutoresizingNone |
这个常量如果被设置,视图将不进行自动尺寸调整。 |
UIViewAutoresizingFlexibleHeight |
这个常量如果被设置,视图的高度将和父视图的高度一起成比例变化。否则,视图的高度将保持不变。 |
UIViewAutoresizingFlexibleWidth |
这个常量如果被设置,视图的宽度将和父视图的宽度一起成比例变化。否则,视图的宽度将保持不变。 |
UIViewAutoresizingFlexibleLeftMargin |
这个常量如果被设置,视图的左边界将随着父视图宽度的变化而按比例进行调整。否则,视图和其父视图的左边界的相对位置将保持不变。 |
UIViewAutoresizingFlexibleRightMargin |
这个常量如果被设置,视图的右边界将随着父视图宽度的变化而按比例进行调整。否则,视图和其父视图的右边界的相对位置将保持不变。 |
UIViewAutoresizingFlexibleBottomMargin |
这个常量如果被设置,视图的底边界将随着父视图高度的变化而按比例进行调整。否则,视图和其父视图的底边界的相对位置将保持不变。 |
UIViewAutoresizingFlexibleTopMargin |
这个常量如果被设置,视图的上边界将随着父视图高度的变化而按比例进行调整。否则,视图和其父视图的上边界的相对位置将保持不变。 |
图2-8为这些常量值的位置提供了一个图形表示。如果这些常量之一被省略,则视图在相应方向上的布局就被固定;如果某个常量被包含在掩码中,在该方向的视图布局就就灵活的。
图2-8 视图的自动尺寸调整掩码常量
如果您通过Interface Builder配置视图,则可以用Size查看器的Autosizing控制来设置每个视图的自动尺寸调整行为。上图中的灵活宽度及高度常量和 Interface Builder中位于同样位置的弹簧具有同样的行为,但是空白常量的行为则是正好相反。换句话说,如果要将灵活右空白的自动尺寸调整行为应用到 Interface Builder的某个视图,必须使相应方向空间的Autosizing控制为空,而不是放置一个支柱。幸运的是,Interface Builder通过动画显示了您的修改对视图自动尺寸调整行为的影响。
如果视图的autoresizesSubviews属性被设置为NO,则该视图的直接子视图的所有自动尺寸调整行为将被忽略。类似地,如果一个子视图的自动尺寸调整掩码被设置为UIViewAutoresizingNone,则该子视图的尺寸将不会被调整,因而其直接子视图的尺寸也不会被调整。
请注意:为了使自动尺寸调整的行为正确,视图的transform属性必须设置为恒等变换;其它变换下的尺寸自动调整行为是未定义的。
自动尺寸调整行为可以适合一些布局的要求,但是如果您希望更多地控制视图的布局,可以在适当的视图类中重载layoutSubviews方法。有关视图布局管理的更多信息,请参见“响应布局的变化”部分。
相关推荐
出现键盘时,它将自动调整UIView的大小。 它可以与任何类型的UIViews一起使用。 如果您的视图扩展了UIScrollView,则需要在调整大小后调整UIScrollView.contentSize。 它的灵感来自Android的android:...
源码IHKeyboardAvoiding,IHKeyboardAvoiding自动调整UIView位置避免被键盘遮挡,IHKeyboardAvoiding是一个当显示键盘时保持任意UIView的可见性的优雅的解决方案,且无需UIScrollView。 测试环境: Xcode 6.0 iOS ...
不要在这个storyboard或XIB使用自动布局,并使用您需要的自动调整大小蒙版。 热交换不可触摸UIView与 IB 中的CALayer 。 请记住,它递归地应用于所有子视图。 使用旧的IBOutlet来查看视图以访问可见层 :) 现在...
TURecipientBar是一个UIView用于类似于iOS Mail应用程序输入收件人。 它处理搜索和显示收件人。 安装 将pod TURecipientBar, '~> 2.0'到Podfile。 运行“ pod install” 导入TURecipientsBar.h和...
iOS开发之UIlabel多行文字自动换行 (自动折行) UIView *footerView = [[UIView alloc]initWithFrame:CGRectMake(10, 100, 300, 180)]; UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(10, 100, 300, ...
GrowingTextView是一个UITextView子类,实现了自动调整UITextView大小的功能(请参阅在Messenger中键入文本以发送消息) ImageScrollView-UIScrollView的子类,用于处理UIImageView集合 MulticastDelegate-非常有用...
此项目中包含一个示例应用程序,该应用程序显示如何使用数学编辑器以及随着文本更改而自动调整编辑器大小的代码。 要运行相同的应用程序,请克隆存储库,然后首先从Example目录运行pod install 。 然后运行...
自动调整方向。 完全可定制的外观。 完全可定制的演示和解雇动画。 努吉特 安装包EasyTipView 手动地 如果您不想使用任何上述依赖管理器,则可以将EasyTipView手动集成到项目中。 支持的构建目标-iOS 8+(Xcode 8...
设备方向更改时自动调整 应用重新进入前景时自动恢复视频 暂停,继续,重启和其他控制 循环播放视频(可选) 静音(可选) 使视频变暗,以便覆盖的UI更突出(可选) 内容 手动地 迁移指南 用法 例子 客制...
iDroid布局 iDroid-Layout是Android布局系统... 视图会自动调整其大小,同时考虑其内容要求和其父级的大小限制。强调在XML中定义布局在布局XML中使用本机UI小部件(如UIButton,UITextField等),甚至使用UIView的自定
LCLPlayingCardView LCLPlayingCardView是实现为UIView的简单但美观的扑克牌。 可作为。 有关更多详细信息,请参见。 ###特征: 轻巧:无图像卡-100%代码。 灵活:由于卡是代码,因此您可以对其进行任何调整以...
自动尺寸调整行为 54 创建和管理视图层次 55 创建一个视图对象 57 添加和移除子视图 57 视图层次中的坐标转换 60 标识视图 61 在运行时修改视图 61 实现视图动画 61 响应布局的变化 63 重画视图的内容 64 隐藏视图 ...
“没有附加自动布局约束”要求iOS 9.0以上版本/ tvOS 9.0以上版本/ macOS 10.9以上版本Swift 5.x / 4/3 / Objective-C Xcode 12/11/10/9最近的变化/功能 :star: 自动调整大小,使用PinLayout计算视图大小。...
ARLabel 可以让开发者像使用 UIView 一样来调整label的字体大小,即只需要设置好frame的大小,那么里面的label大小 ARLabel 将自动帮你调整。另外,要实现动态改变大小的label(如效果Gif图所示),通过 ARLabel 也...
自动适应父视图大小: 3 定义按钮 3 设置视图背景图片 4 活动表单 4 警告视图 4 动画效果 4 图像、文本标签和详细文本标签 6 调整输入界面 7 UIViewController内建Table View 7 将plist文件中的数据赋给数组 8 ...