添加和删除约束是一个非常糟糕的例子。我会让你的UI更复杂。 解决这些自动布局问题的最佳方法是添加两个约束。一个从imageView到button,第二个从imageView到label。 现在,在设置这些约束之后,您需要设置它们的priority级别。因此,假设button将首先低于imageView。在这种情况下,您需要将imageView to button constraint的优先级设置为750或UILayoutPriorityDefaultHigh,并将label to button constraint的优先级设置为250或UILayoutPriorityDefaultLow。 让我们开始创建一个自定义UITableViewCell
5条答案
按热度按时间scyqe7ek1#
添加和删除约束是一个非常糟糕的例子。我会让你的UI更复杂。
解决这些自动布局问题的最佳方法是添加两个约束。一个从
imageView
到button
,第二个从imageView
到label
。现在,在设置这些约束之后,您需要设置它们的
priority
级别。因此,假设button
将首先低于imageView
。在这种情况下,您需要将imageView to button constraint的优先级设置为750或UILayoutPriorityDefaultHigh
,并将label to button constraint的优先级设置为250或UILayoutPriorityDefaultLow
。让我们开始创建一个自定义UITableViewCell
之后,在放置tableView的类中实现这样的逻辑:
你应该都准备好了。
qcbq4gxm2#
您可以尝试使用StackView,当您告诉要隐藏的东西时,imageView堆栈视图将调整StackView,就好像imageView从未是视图的一部分,并且这是一个轻松的工作,不必担心约束。
l5tcr1uw3#
你可以在constraint上创建
IBOutlet
,然后像这样简单地修改值:但我建议你为此创建一个
tableView
。在这种情况下,你的代码和逻辑,我认为,将更加准确。bvjveswy4#
你可以这样做,而不是躲起来。
1.从imageview的heights约束创建一个outlet,现在称之为constraint。
1.设置constraint.constant = 0 //实际上与隐藏相同。
1.设置constraint.constant = NON_ZERO_VALUE //与show相同。
希望有帮助!
uxh89sit5#
我有几个选择。第一种方法更容易实现,但如果您决定以后更改布局,则不太灵活。
1.使按钮的约束位于标签下方。保持对这个约束的引用(如果你使用的是故事板,你可以通过故事板将它连接到你的代码中,就像你对按钮本身所做的那样)。当imageView可见时,设置
myConstraint.constant += myImageView.frame.height
。当imageView隐藏时,设置myConstraint.constant -= myImageView.frame.height
。然后,调用view.setNeedsLayout
来更新约束。1.设置两个约束:一个用于图像下方,一个用于标签下方(“constraintToImage”和“constraintToLabel”)。像选项1一样将它们都连接到控制器,并在图像可见时调用
view.addConstraint(constraintToImage)
和view.removeConstraint(constraintToLabel)
(当图像隐藏时则相反)。同样,在之后调用view.setNeedsLayout
。