我试图将一个按钮添加回堆栈视图,我不知道如何在代码中执行此操作,我只希望按钮出现在某种情况下,这就是为什么我在代码中这样做,这里有我的
我用
删除它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()
}
答案 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