Ios Swift-根据条件移除宽度?
我正在编写一个社交网络,它允许人们喜欢和评论图片。 然而,我对那部分有个问题 如果我有一个(或多个)喜欢和一个(或多个)评论,这没关系: 如果我有一个(或多个)评论,但没有喜欢,用户界面不是很好 我想移动按钮“2评论”在左侧时,没有喜欢。我想通过给“1like”按钮0宽度来实现这一点。然而,宽度并不总是一样的。如果我有1个喜欢或12543喜欢,宽度将不同 我不知道怎样才能纠正这个问题。Ios Swift-根据条件移除宽度?,ios,swift,swift3,constraints,Ios,Swift,Swift3,Constraints,我正在编写一个社交网络,它允许人们喜欢和评论图片。 然而,我对那部分有个问题 如果我有一个(或多个)喜欢和一个(或多个)评论,这没关系: 如果我有一个(或多个)评论,但没有喜欢,用户界面不是很好 我想移动按钮“2评论”在左侧时,没有喜欢。我想通过给“1like”按钮0宽度来实现这一点。然而,宽度并不总是一样的。如果我有1个喜欢或12543喜欢,宽度将不同 我不知道怎样才能纠正这个问题。 您有什么想法吗?您可以创建一个自定义组件,该组件将具有一个视图,如果该视图可用,则可以创建两个UILabe
您有什么想法吗?您可以创建一个自定义组件,该组件将具有一个视图,如果该视图可用,则可以创建两个UILabel作为子视图。第一个uilabel包含编号,第二个uilabel包含标题(“注释”)。 uilables的约束条件应如下所示: 第一个表前导==view.leading,第一个标签尾随==第二个标签尾随,第二个标签尾随==view.training。view.height==“某个常量”。在这种情况下,视图的宽度将与标签的宽度一致。 现在,您应该将这些自定义视图添加到视图中。在您的情况下,它将是两个或一个自定义组件,一个用于喜欢的组件,另一个用于注释。 将这些自定义视图添加到tmprorary阵列,并执行以下代码:
var prevLayoutedView : UIView = self
for (index, customView) in custumViewsArr.enumerated()
{
customView.leadingAnchor.constraint(equalTo: prevLayoutedView.leadingAnchor)
if index == custumViewsArr.enumerated.count
{
customView.trailingAnchor.constraint(equalTo: prevLayoutedView.trailing)
}
}
你需要调整一些常数、压缩阻力和拥抱优先级,但这应该有助于你解决这个问题
更新:
您可以使用不太通用的解决方案,不使用自定义组件,而只使用uilable。然后使用相同的for loop第一个简单的解决方案是在不可点击的情况下为两者保留一个标签 否则使用两个标签 我对两个标签的限制是 1。相似标签的约束条件: 2。注释标签的约束条件
@IBOutlet var cnLeadingToView: NSLayoutConstraint!
@IBOutlet var cnLeadingToLikelbl: NSLayoutConstraint!
在故事板中为注释标签的前导约束指定此出口,然后执行此操作
if cntLikes == 0 { // temp variable
//hide the like lable
self.lblLikes.isHidden = true
self.cnLeadingToLikelbl.isActive = false // deactivate the leading constraint with like label
self.cnLeadingToView.isActive = true // activate the leading constraint with view
self.cnLeadingToView.constant = 15 // give leading space constant
}else {
self.lblLikes.isHidden = false
self.cnLeadingToLikelbl.isActive = true
self.cnLeadingToView.isActive = false
}
正如@dahiya_boy所说,我必须将类似标签的关系从equalTo更改为lessthanequalto 默认情况下,我输入375,如果不相似,则输入0。就这么简单
非常感谢大家 您可以始终使用一个标签来表示两者,并根据当前条件设置文本格式。@holex很抱歉,这不是标签,而是按钮,每个按钮都有操作。这就是为什么我不能只使用一个:/将like标签关系从
equalTo
更改为lessthanequalto
。使用UIStackView
@dahiya\u boy我不能这样做,因为我不知道相等的值是多少。正如我所说,如果我没有like、1like或12343453 like,则宽度不同:/