【问题标题】:Subview fail to show up after I set a constraint设置约束后子视图无法显示
【发布时间】:2026-01-10 16:45:02
【问题描述】:

我想在图像视图的顶部添加一个带有“原始”文本的小覆盖视图,它应该只在用户查看原始图像时可见。

这是我的toggleImage函数,当用户按下它时,图像视图将显示原始图像(并且会弹出一个带有文本“原始”的视图)然后当用户举手时返回过滤后的图像。

    func toggleImage(sender: UILongPressGestureRecognizer) {
    sender.minimumPressDuration = 0.3
    if sender.state == .Began{
        imageView.image = self.rawImage!

        view.addSubview(originalText)


    }else if sender.state == .Ended{
        imageView.image = self.newImage
    }

现在我想为带有文本的视图设置一个约束。

    func toggleImage(sender: UILongPressGestureRecognizer) {
    sender.minimumPressDuration = 0.3
    if sender.state == .Began{
        imageView.image = self.rawImage!

        view.addSubview(originalText)

        originalText.translatesAutoresizingMaskIntoConstraints = false

        let bottomConstraint = originalText.bottomAnchor.constraintEqualToAnchor(view.topAnchor)
        let leftConstriant = originalText.leftAnchor.constraintEqualToAnchor(view.leftAnchor)
        let rightConstraint = originalText.rightAnchor.constraintEqualToAnchor(view.rightAnchor)
        let heightConstraint = originalText.heightAnchor.constraintEqualToConstant(44)

        NSLayoutConstraint.activateConstraints([bottomConstraint,leftConstriant,rightConstraint,heightConstraint])
        view.layoutIfNeeded()



    }else if sender.state == .Ended{
        imageView.image = self.newImage
    }

subView 现在无法显示,如何解决?

这是未设置约束时模拟器的屏幕截图。 screenshot

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    你的底部等于顶部:

    let bottomConstraint = originalText.bottomAnchor.constraintEqualToAnchor(view.topAnchor)
    

    您的视图很可能是在屏幕外/视图边界之外渲染的。

    改成:

    let topConstraint = originalText.topAnchor.constraintEqualToAnchor(view.topAnchor)
    

    【讨论】: