编程自动布局迅速(Programming autolayout swift)

2019-09-29 07:28发布

我在应用程序:TextView中和的TableView。 我创建自己的代码。 现在我需要做的编程自动布局。 但我不知道它是如何做。 请帮忙。 PS对不起,我的英语=)

    let displayWidth: CGFloat = self.view.frame.width
    let displayHeight: CGFloat = self.view.frame.height

    myTextView = UITextView(frame: CGRect(x: 0, y: 20, width: displayWidth, height: displayHeight / 3))
    creatTextView()

    myTableView = UITableView(frame: CGRect(x: 0, y: displayHeight / 3, width: displayWidth, height: displayHeight * 2 / 3))
    createTable()

Answer 1:

快速自动版式指南

文档: https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/

我通常设置约束到左,右,底部/顶部和宽度/高度约束。 这可以通过多种方式来实现。

某些关键字:

领导 :指物体的左侧部分

尾随 :指对象的右侧部分

首先要进行所有必要的变量来保存你的自动布局指南和视图您正在使用自动布局上,你将需要translatesAutoresizingMaskIntoConstraints设置为false这样的:

self.btn.translatesAutoresizingMaskIntoConstraints = false

var btnLeading: NSLayoutConstraint!
var btnBottom: NSLayoutConstraint!
var btnTop: NSLayoutConstraint!
var btnWidth: NSLayoutConstraint!

我只是复制一些代码,我在一个项目中使用,但我想你会最终得到它的窍门。 self.userLocationBtn只是在我看来,我想我有一个子类UIView的定位按钮。

self.btnLeading = NSLayoutConstraint(
        item: self.userLocationBtn,
        attribute: .leading,
        relatedBy: .equal,
        toItem: self,
        attribute: .leading,
        multiplier: 1.0,
        constant: 5.0)
    self.btnBottom = NSLayoutConstraint(
        item: self.userLocationBtn,
        attribute: .bottom,
        relatedBy: .equal,
        toItem: self,
        attribute: .bottom,
        multiplier: 1.0,
        constant: 0.0)
    self.btnTop = NSLayoutConstraint(
        item: self.userLocationBtn,
        attribute: .top,
        relatedBy: .equal,
        toItem: self,
        attribute: .top,
        multiplier: 1.0,
        constant: 0.0)
    self.btnWidth = NSLayoutConstraint(
        item: self.userLocationBtn,
        attribute: .width,
        relatedBy: .equal,
        toItem: self,
        attribute: .height,
        multiplier: 1.0,
        constant: 0.0)

    self.addSubview(self.doneButton)

该视图添加后,我们需要激活的限制,然后更新视图。

NSLayoutConstraint.activate([self.btnLeading, self.btnBottom, self.btnTop, self.btnWidth])

self.view.layoutIfNeeded() //Lays out the subviews immediately.


文章来源: Programming autolayout swift