通过代码向stackview添加按钮

时间:2016-03-10 18:32:25

标签: ios swift

我试图将一个按钮添加回堆栈视图,我不知道如何在代码中执行此操作,我只希望按钮出现在某种情况下,这就是为什么我在代码中这样做,这里有我的

我用

删除它
func hideCompareButton() {
    UIView.animateWithDuration(0.4, animations: {
        self.compareButton.alpha = 0
        }) { completed in
            if completed == true {
                self.compareButton.removeFromSuperview()
            }
    }
}

我已经得到了通常可以与其他视图一起使用的内容,但是我不知道如何在一个首选视图上添加一个按钮,在一个首选位置,当它和&#3 #39; s没有被添加,4当它被添加,而id就像它是左边的第3个按钮

func showCompareButton() {
    // bottomStackView.addArrangedSubview(compareButton) ???
    bottomStackView.addSubview(compareButton)

    let bottomConstraint = compareButton.bottomAnchor.constraintEqualToAnchor(view.bottomAnchor)
    let leftConstraint = compareButton.leftAnchor.constraintEqualToAnchor(filterButton.rightAnchor)
    let rightConstraint = compareButton.rightAnchor.constraintEqualToAnchor(shareButton.leftAnchor)

    let heightConstraint = compareButton.heightAnchor.constraintEqualToConstant(44)

    NSLayoutConstraint.activateConstraints([bottomConstraint, leftConstraint, rightConstraint, heightConstraint])

    bottomStackView.layoutIfNeeded()
}

2 个答案:

答案 0 :(得分:2)

为什么不用所有按钮以你想要的方式构建堆栈视图,然后只需隐藏第3个按钮。当你想要它取消隐藏它。堆栈视图将完成所有其余工作。这里有一些堆栈视图代码可以帮到你。这构建了一个键盘,但它的原理相同,它添加了所有按钮,然后使其可见。

这里有一些堆栈视图代码可以帮助你。

public String soundName = "getMsgSound.wav";

public void playSound()
{
try {
    File soundFile = new File(soundName);
    AudioInputStream audioIn = AudioSystem.getAudioInputStream(soundFile);
    Clip clip = AudioSystem.getClip();
    clip.open(audioIn);
    clip.start();

    } catch (UnsupportedAudioFileException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (LineUnavailableException e) {
        e.printStackTrace();
    }
}

答案 1 :(得分:1)

不要添加任何约束!这正是堆栈视图的工作。只需将按钮设置为堆栈视图的排列视图,然后停止

如果问题是要将按钮插入现有排列视图的中间,那么这就是insertArrangedSubview:atIndex:的用途。见IOS stackview addArrangedSubview add at specific index