动画UIButton状态变化

Joh*_*son 44 iphone objective-c uibutton

我正在使用带有正常和突出显示状态图像的UIButton.它们按预期工作但我希望有一些淡入/合并过渡而不仅仅是突然交换.

我怎样才能做到这一点?

Mar*_*rný 116

这可以使用UIView的过渡动画来完成.isHighlighted属性不可动,无关紧要,因为它会转换整个视图.

斯威夫特3

UIView.transition(with: button,
                  duration: 4.0,
                  options: .transitionCrossDissolve,
                  animations: { button.isHighlighted = true },
                  completion: nil)
Run Code Online (Sandbox Code Playgroud)

Objective-C的

[UIView transitionWithView:button
                  duration:4.0
                   options:UIViewAnimationOptionTransitionCrossDissolve
                animations:^{ button.highlighted = YES; }
                completion:nil];
Run Code Online (Sandbox Code Playgroud)

  • @Marty`predited`属性不可动画,因此`+ transitionWithView:duration:options:animations:completion:`必须使用`而不是`+ animateWithDuration:delay:options:animations:completion:`. (11认同)
  • @ Jerland2如上所述,`transition(with:UIView ...)`并不关心属性不是可动画的,因为它会转换整个视图。 (2认同)
  • 这里的秘密在于`.transitionCrossDissolve`。其他动画样式不能可靠地制作动画。@MariánČerný - 我建议你扩展这个例子,以 _where_ 来执行此操作,例如在 `... isHighlighted { didSet {} }` 内 (2认同)