Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift-根据条件移除宽度?_Ios_Swift_Swift3_Constraints - Fatal编程技术网

Ios Swift-根据条件移除宽度?

Ios Swift-根据条件移除宽度?,ios,swift,swift3,constraints,Ios,Swift,Swift3,Constraints,我正在编写一个社交网络,它允许人们喜欢和评论图片。 然而,我对那部分有个问题 如果我有一个(或多个)喜欢和一个(或多个)评论,这没关系: 如果我有一个(或多个)评论,但没有喜欢,用户界面不是很好 我想移动按钮“2评论”在左侧时,没有喜欢。我想通过给“1like”按钮0宽度来实现这一点。然而,宽度并不总是一样的。如果我有1个喜欢或12543喜欢,宽度将不同 我不知道怎样才能纠正这个问题。 您有什么想法吗?您可以创建一个自定义组件,该组件将具有一个视图,如果该视图可用,则可以创建两个UILabe

我正在编写一个社交网络,它允许人们喜欢和评论图片。 然而,我对那部分有个问题

如果我有一个(或多个)喜欢和一个(或多个)评论,这没关系:

如果我有一个(或多个)评论,但没有喜欢,用户界面不是很好

我想移动按钮“2评论”在左侧时,没有喜欢。我想通过给“1like”按钮0宽度来实现这一点。然而,宽度并不总是一样的。如果我有1个喜欢或12543喜欢,宽度将不同

我不知道怎样才能纠正这个问题。
您有什么想法吗?

您可以创建一个自定义组件,该组件将具有一个视图,如果该视图可用,则可以创建两个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,则宽度不同:/