AutoLayout 和 AutoresizingMask的使用

手机游戏开发者 2024-9-4 19:43:41 87 0 来自 中国
Swift 中 AutoLayout 和 AutoresizingMask 用于主动调解视图的结构,以顺应差别大小的装备和屏幕方向。两种方法都可以用来处理惩罚视图的主动顺应问题,但是它们的实现有所差别。

  • AutoLayout
    AutoLayout是一个基于束缚的视图结构体系,它可以使视图根据束缚条件主动顺应差别的装备尺寸和方向。通过添加束缚条件,AutoLayout管帐算出每个视图的准确位置和大小,以确保它们始终处于准确的位置而且是准确的尺寸。
以下是一些常见的AutoLayout 束缚条件:

  • 宽度束缚或高度束缚:限定视图的宽度或高度;
  • 程度或垂直间距束缚:限定视图之间的间距;
  • 顶部、底部、左边、右边束缚:限定视图在父视图中的位置。
以下是一个简单的示例代码,演示如何使用 AutoLayout 设置一个视图在父视图中程度居中而且垂直居中:
import UIKitclass ViewController: UIViewController {    override func viewDidLoad() {        super.viewDidLoad()               let myView = UIView()        myView.backgroundColor = .red        myView.translatesAutoresizingMaskIntoConstraints = false // 关闭 AutoresizingMask,打开 AutoLayout        view.addSubview(myView) // 将myView添加到父视图上        NSLayoutConstraint.activate([            myView.centerXAnchor.constraint(equalTo: view.centerXAnchor), // X轴方向居中            myView.centerYAnchor.constraint(equalTo: view.centerYAnchor), // Y轴方向居中            myView.heightAnchor.constraint(equalToConstant: 200), // 设置高度为200            myView.widthAnchor.constraint(equalTo: myView.heightAnchor, multiplier: 0.8) // 宽度是高度的0.8倍        ])    }}以上代码创建了一个赤色的 UIView 对象,并将其添加到当前ViewController的主视图上。使用 NSLayoutConstraint.activate() 方法添加了一组束缚来确定视图的位置和大小,此中 myView 的中央点与父视图的中央点重合,而且设置了视图的高度和宽度。

  • AutoresizingMask
    AutoresizingMask是一个基于 autoresizingMask 属性 的视图结构体系,它可以使视图根据屏幕方向主动调解大小和位置。当视图调解宽度或高度时,AutoresizingMask 属性可根据视图的结构信息调解子视图的结构。
以下是一些常见的AutoresizingMask 属性:

  • UIViewAutoresizingFlexibleWidth : 主动调解宽度
  • UIViewAutoresizingFlexibleHeight : 主动调解高度
  • UIViewAutoresizingFlexibleLeftMargin : 主动调解左边距
  • UIViewAutoresizingFlexibleRightMargin : 主动调解右边距
  • UIViewAutoresizingFlexibleTopMargin : 主动调解顶部间隔
  • UIViewAutoresizingFlexibleBottomMargin : 主动调解底部间隔
接下来,让我们看一下如何使用 AutoresizingMask 添加结构束缚来实现自顺应结构。以下是一个示例代码,演示如何使用 autoresizingMask 属性将一个视图居中并根据屏幕方向举行调解大小:
import UIKitclass ViewController: UIViewController {    override func viewDidLoad() {        super.viewDidLoad()        let myView = UIView()        myView.backgroundColor = .red        myView.frame = CGRect(x: 0, y: 0, width: 200, height: 200)        myView.center = view.center // 设置视图居中        myView.autoresizingMask = [.flexibleWidth, .flexibleHeight, .flexibleTopMargin, .flexibleBottomMargin] // 自顺应宽度、高度和顶部、底部边距        view.addSubview(myView)    }}以上代码创建了一个赤色的 UIView 对象,并将其添加到当前 ViewController 的主视图上。使用 autoresizingMask 属性设置了视图的位置和大小自顺应调解,此中宽度和高度都是自顺应的,而顶部和底部边距可以随着屏幕方向变革而调解。
值得留意的是,AutoresizingMask 不支持精细的束缚设置,只能简单地指定自顺应方式,不实用于必要更高级结构的环境。
总的来说,AutoLayout的实现更加精细、机动,可以使用束缚条件创造出更多差别的结构效果,但AutoresizingMask属性控制简单,适当快速实现简单结构。必要根据具体需求、筹划选择使用哪种自顺应结构方式。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-22 01:04, Processed in 0.184022 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表