使用 SnapKit 对 UIView 进行约束但啥也不显示

Posted

技术标签:

【中文标题】使用 SnapKit 对 UIView 进行约束但啥也不显示【英文标题】:use SnapKit make constraint to a UIView but show nothing使用 SnapKit 对 UIView 进行约束但什么也不显示 【发布时间】:2017-12-23 02:00:28 【问题描述】:

来自“单一视图应用程序”模板的一个完全清晰的新 swift 项目。 当我确保可以正确导入 SnapKit 时。 我只是播放非常简单的代码来显示一个矩形:

    let test = UIView()
    test.backgroundColor = UIColor.green
    test.frame.size = CGSize(width: 500, height: 300)
    
    self.view.addSubview(test)
    test.snp.makeConstraints  (maker) in
        // maker.top.equalTo(30)
        // maker.centerX.equalTo(self.view)
        // maker.height.equalTo(100)
    

将此代码放入 "UIViewController.swift" 的 func viewDidLoad 中。 从现在开始,对 SnapKit 的事情进行了评论,并且工作正常!如图片所示: work fine snap(use frame.size) 但是当我取消注释 SnapKit 的东西时,它什么都没有显示!像这样: work bad snap(use SnapKit)

所以,请帮我找出问题所在,谢谢!

【问题讨论】:

我通常讨厌我现在要给出的那种评论(一个不回答问题,而是做出不受欢迎的基于意见的观察的评论),但我希望它能帮助你开发商。你为什么要使用 3rd-party API 来处理像约束这样简单和基本的事情?你真的应该使用 3rd-party APIs 当你基本上有点不得不像谷歌地图......再次,在我看来。 ?????? 【参考方案1】:

如果使用约束,则无需设置帧大小。

你的代码应该是这样的:

    let test = UIView()
    test.backgroundColor = UIColor.green

    self.view.addSubview(test)
    test.snp.makeConstraints  (make) in
        make.top.equalTo(30)
        make.centerX.equalToSuperview()
        make.height.equalTo(300)
        make.width.equalTo(500)
    

【讨论】:

尝试在您的答案中添加一些代码以帮助清晰。

以上是关于使用 SnapKit 对 UIView 进行约束但啥也不显示的主要内容,如果未能解决你的问题,请参考以下文章

使用 SnapKit 约束动画

如何获取已通过 snapkit 设置的 UIView 的框架

SnapKit 约束创建过程

更新 SnapKit 约束偏移

UITableView HeaderView,FooterView 使用SnapKit布局导致约束异常

SnapKit 自动布局损坏:“无法同时满足约束”