我制作了一个测验应用,可让用户选择四个多项选择按钮。我试图让按钮翻转到前面,以便为每个问题显示一组新答案,但我没有取得进展。我发现文档和错误消息极具挑战性。
我包含此代码只是因为我知道我需要包含一些东西;我完全清楚它是垃圾。
func rotateButton(newname:String) {
let buttonImage = UIImage(named: "yellow_button.png")
for button in choiceButtons! {
var new = UIButton()
new.setImage(UIImage(named: "yellow_button.png"))
new.setTitle(newname)
button.addSubview(new)
UIView.transitionFromView(button, toView: new, duration: 1, options: UIViewAnimationOptions.TransitionFlipFromLeft, completion: nil)
答案 0 :(得分:2)
首先,对于UIButton,没有setImage
或setTitle
这样的东西,所以你的代码永远不会编译。您必须致电setImage:forState:
和setTitle:forState:
。
其次,不要多做一个额外的按钮!没有必要,当你完全忘记按钮时,你只会把自己搞得一团糟。只需更改每个现有按钮的值并翻转它:
UIView.transitionWithView(button, duration: 1,
options: .TransitionFlipFromLeft | .AllowAnimatedContent,
animations: {
button.setImage(UIImage(named: "yellow_button.png"), forState:.Normal)
button.setTitle(newname, forState:.Normal)
}, completion: nil)
答案 1 :(得分:0)
感谢马特的回答。
斯威夫特 5:
UIView.transition(with: button, duration: 1,
options: [.transitionFlipFromLeft, .allowAnimatedContent],
animations: {
button.setImage(UIImage(named: "yellow_button.png"), for: .normal)
button.setTitle(newname, for: .normal)
}, completion: nil)