使用自动布局和 SnapKit 进行相对定位

Posted

技术标签:

【中文标题】使用自动布局和 SnapKit 进行相对定位【英文标题】:Relative positioning using auto layout and SnapKit 【发布时间】:2016-09-06 12:23:21 【问题描述】:

我有一个标签,无论使用什么设备,我都希望它在屏幕上具有相同的相对位置。例如。标签的位置距视图上边距 10%,距视图左边距 30%。

常量将始终进行定位,例如距离视图边缘 150 像素,因此对于分辨率较小的设备来说会更大,而分辨率更大的设备只会有更小的距离...

有没有办法以编程方式实现这一点,例如在 SnapKit 的帮助下?

我的代码目前如下所示:

import UIKit
import SnapKit


class worldViewController: UIViewController 
      lazy var correctFieldNew = UILabel()

    override func viewDidLoad() 
        super.viewDidLoad()

            self.view.addSubview(correctFieldNew)
            correctFieldNew.backgroundColor = UIColor.blueColor()

            correctFieldNew.snp_makeConstraints  (make) -> Void in
                make.size.equalTo(CGSizeMake(90, 30))
            
    

我觉得我必须在这里使用乘数,但是当我写如下内容时标签不会移动一英寸:

make.top.equalTo(self.view).multipliedBy(0.1) 

【问题讨论】:

不知道?也许有人知道非 snapkit 解决方案? 您可以只计算view.frame.height/width 并将其乘以0 到1 之间的某个浮点数。然后将其用作您的SnapKit 偏移量。 【参考方案1】:

正确的使用方法是:

make.top.equalTo(self.view.snp_bottom).multipliedBy(0.1) 

【讨论】:

以上是关于使用自动布局和 SnapKit 进行相对定位的主要内容,如果未能解决你的问题,请参考以下文章

带有自动布局(snapkit)的圆形视图?

自动布局 [Snapkit] 更改旋转约束

与在 Interface Builder 中使用自动布局相比,SnapKit 有啥优势?

SnapKit 的自动布局未按预期响应

读 SnapKit 和 Masonry 自动布局框架源码(轉)

Swift - 自动布局库SnapKit的使用详解1(配置使用方法样例)