UIView.transition在模拟器中淡出但在设备上淡出

时间:2016-12-13 22:52:03

标签: ios ios-simulator

我的电话看起来像这样:

UIView.transition(with: button, duration: 0.5,
                  options: .transitionCrossDissolve,
                  animations: { button.hidden = false },
                  completion: null)

当我用它来显示一个按钮时,它按预期工作,有一个很好的淡入。当我使用它隐藏(使用button.hidden = true)时,它在iOS模拟器中再次正常工作,但在设备上 - iPhone或iPad - 它只会消失而不会褪色。

我能找到的唯一显着差异是我的设备运行iOS 10.2,但模拟器只有10.1。 Xcode没有给我下载10.2模拟器的选项。

还有什么我可以错过的吗?我应该使用其他动画选项吗?

值得注意的是,我隐藏和显示的按钮位于导航栏中的UIBarButtonItem内。

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,但只是在UIView中使用了标准的UIView。我通过将我隐藏的视图的超视图作为UIView.transition(with: button.superview!, duration: 0.5, options: .transitionCrossDissolve, animations: { button.hidden = false }, completion: null) 参数传递来修复我的。我认为重新阅读文档就是你应该如何做到这一点,并且它通过传递有问题的视图起作用的事实可能只是Apple可能在10.2中修复的一个方便的错误,但这只是猜测。

无论如何,使用我所做的修改我的代码来重写OP的代码来说明:

Sub Change_Ticket_Initials()

Dim strReturn As String

strReturn = InputBox("Enter Initials", "Change Ticket Initials")
If strReturn = vbNullString Then Exit Sub 'if "" exit sub

If Len(strReturn) < 1 Or Len(strReturn) > 3 Then
    MsgBox "Must Be 1-3 Characters Try Again"
    Run "Change_Ticket_Initials"
Else
    Control_Sheet_VB.Range("C2").Value = UCase(strReturn)
End If

End Sub                  

答案 1 :(得分:0)

由于我的按钮位于导航栏中,因此我最终使用了navigationItem.setRightBarButtonItems(buttons, animated: true)。有了这个,动画在模拟器和设备上都消失了。