长按放大使用约束更新

时间:2015-07-21 03:35:39

标签: swift layout autolayout nslayoutconstraint

我有一个功能正在工作,但我不明白为什么它的工作原理。我只是玩了这些值,直到它做了我想要的。我要求解释,因为我担心,如果我不理解它是如何工作的,它可能在某些时候以不可预测的方式表现。

当用户按下长按钮时,代码运行。然后代码将具有30个前导空间和30个尾随空间的图像放大到superview,以便没有前导空格和没有尾随空格。由于图像已经具有比率约束,因此高度会增加以保持图像的宽高比。

我不明白的原因是为什么我只需要从每个约束中减去9以使其大约拥抱超视图边缘,但我必须为每个约束添加30以使其恢复到原始大小。

//LONG PRESS FUNCTION
//Scoring Page: Fact Section

var zoomState = ""

@IBOutlet var fctBx_Img_LeadingCon: NSLayoutConstraint!
@IBOutlet var fctBx_Img_TrailCon: NSLayoutConstraint!

@IBAction func longPress(sender: UILongPressGestureRecognizer) {
    if sender.state == UIGestureRecognizerState.Began {
        if zoomState == "" {
            fctBx_Img_TrailCon.constant = -9
            fctBx_Img_LeadingCon.constant = -9
            zoomState = "zoomed"
        }
        else {
            fctBx_Img_TrailCon.constant = +30
            fctBx_Img_LeadingCon.constant = +30
            zoomState = ""
        }
    }
}

详细说明: 使用Xcode 6.4 使用Swift 使用故事板 使用自动布局,仅限iPhone,仅限纵向 我是编程和app dev的新手。

1 个答案:

答案 0 :(得分:1)

你没有减去值-9实际上你正在分配它&你指定的加法部分也是如此+30。所以它恢复到正常值。