当前位置: 首页 > 知识库问答 >
问题:

如何在Swift中设置NSLayoutConstraint?

狄阳秋
2023-03-14

我想在不同的情况下芳香地改变一些约束。

声明来自情节提要的约束:

    @IBOutlet weak var topConstraintPostImageView: NSLayoutConstraint!
    @IBOutlet weak var heightConstraint: NSLayoutConstraint!

这是我的代码,我想在其中更改约束:

func updateCellView(post: PostModel) {

    // Wenn Bild mit Text gepostet wird
    if post.imageURL != nil && post.postText != nil {

        topConstraintPostImageView.constant = 10

        // Wenn Text ohne bild gepostet wird
    } else if post.imageURL == nil && post.postText != nil  {

        heightConstraint.constant = 1

        // Wenn Bild ohne Text gepostet wird
    } else if post.imageURL != nil && post.postText == nil {

        topConstraintPostImageView.constant = 0

    }
}

但是约束仍然没有改变。

这是我的手机ForRowAt func:

    extension DiscoveryViewController: UITableViewDataSource {
    // wie viele Zellen
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return postArray.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "DiscoveryCollectionViewCell", for: indexPath) as! DiscoveryCollectionViewCell

        cell.updateCellView(post: postArray[indexPath.row].post!)
        cell.layoutIfNeeded()
        cell.user = postArray[indexPath.row]
        cell.post = postArray[indexPath.row]
        cell.delegate = self

        return cell
    }
}

提前感谢您的帮助!

共有2个答案

龚玄天
2023-03-14

考虑从updateCellView()在您的视图上调用setNeedsUpdateConstraint(),然后实现:

class MyView: UIView {
  // ...
  override func updateConstraints() {
    super.updateConstraints()
    // This is where you update your constraints including the logic above.
  }
  // ...
}

✳️ 更好的是,请考虑使用 UIStackView 来排列和单独隐藏或显示要有条件显示的视图。

伍宝
2023-03-14

在vc中插入< code>cellForRowAt

 cell.updateCellView(arr[indexPath.row])////  change arr to your datasource arr inside here set constants
 cell.layoutIfNeeded()
 return cell

在if语句的末尾

 类似资料:
  • 问题内容: 我想制作一个UIImageView动画。我声明了NSLayoutConstraintin viewDidLoad并使用了以下代码: 为什么我的图像不动? 问题答案: 在您按下时viewDidLoad,约束引擎尚未 应用,并且视图的起始位置尚未建立。 因此,可以随时在中添加原始约束viewDidLoad,但是您 需要将推迟到animateWithDuration该过程的后面(例如 vie

  • 问题内容: 我想要一个使用样式的单元格。 我最初的Objective-C代码是: 在已经在SO上搜索了几个问题之后,我想像这样在Swift中编写它: 但这并不能让我说我想要一种风格。所以我尝试了这个: 这给了我一个牢房,但是却没有让我。 我已经研究了更多内容,并观看了此视频教程,但是他创建了一个单独的对象,我认为这是不必要的,因为我之前在Obj- C中实现了相同的效果。 有任何想法吗?谢谢。 问题

  • 问题内容: 在早期版本的Swift中,可以使用以下代码创建延迟: 但现在,斯威夫特3时,Xcode自动改变6个不同的东西,但随后出现以下错误:“无法转换到预期值又名”。 在Swift 3中运行一系列代码之前,如何创建延迟? 问题答案: 经过大量研究,我终于找到了答案。 这会在Swift 3和Swift 4中创建所需的“等待”效果。

  • 问题内容: 如何在Swift中设置自定义UIBarButtonItem的操作? 以下代码将按钮成功放置在导航栏中: 现在,我想在触摸按钮时打电话。到目前为止,我的努力: 和.. 和.. 请注意,它出现在智能感知中,但不起作用。 谢谢你的帮助。 编辑:为后代,以下作品: 问题答案: 从Swift 2.2开始,针对编译时检查的选择器有一种特殊的语法。它使用语法:。 Swift 3及更高版本: 如果不确

  • 问题内容: 我正在尝试为我的应用程序设置推送通知系统。我有服务器和开发人员许可证来设置推送通知服务。 我目前正在Swift中运行我的应用。我希望能够从服务器远程发送通知。我怎样才能做到这一点? 问题答案: 尽管可以很好地处理推送通知,但我仍然相信可以立即共享完整的完整案例以简化操作: 要注册APNS的应用程序,(在AppDelegate.swift中的didFinishLaunchingWithO

  • 问题内容: 我想在应用程序委托中设置rootViewController .. 问题答案: 你可以做这样的事情。