使用 UISwitch 制作动画

Posted

技术标签:

【中文标题】使用 UISwitch 制作动画【英文标题】:Animating with UISwitch 【发布时间】:2011-08-05 02:23:20 【问题描述】:

我希望能够创建一个使用 UISwitch 启动的动画。我目前有这段代码可以在开关打开时隐藏一些 UI 元素:

-(IBAction)displayStartingAddress:(id)sender
    NSLog(@"starting displayStartingAddress");
    if (enterStartingAddress.hidden==YES) 
        enterStartingAddress.hidden=NO;
        startingAddress.hidden=NO;

    else
        enterStartingAddress.hidden=YES;
        startingAddress.hidden=YES;
    

当“enterStartingAddress”和“startingAddress”显示时,我希望开关能够使 UI 元素的动画向下移动。

我对 ios 编程和 Objective-C 非常陌生,因此我将不胜感激。谢谢。

【问题讨论】:

这个问题很不清楚,请您改写一下。 我确实这么认为。简单地说,我想在切换开关时移动一些 ui 元素。 【参考方案1】:

如果您立即将界面元素设置为隐藏,则不会执行任何动画,因为它会在动画时被隐藏。您要做的是为alpha 属性设置动画。那就是对象的可见性。下面是一个动画帧和 alpha 的例子:

-(IBAction)displayStartingAddress:(id)sender
    CGRect frame1 = enterStartingAddress.frame;
    CGRect frame2 = startingAddress.frame;

    if (enterStartingAddress.alpha==0)  //not the best way to do it to be honest
        frame1.origin.y += 100;
        frame2.origin.y += 100;
        [UIView animateWithDuration:0.5 animations:^  
             enterStartingAddress.alpha = 1;
             startingAddress = 1;
             enterStartingAddress.frame = frame1;
             startingAddress.frame = frame2;
        ];    
    

    else
        frame1.origin.y -= 100;
        frame2.origin.y -= 100;
        [UIView animateWithDuration:0.5 animations:^  
             enterStartingAddress.alpha = 0;
             startingAddress = 0;
             enterStartingAddress.frame = frame1;
             startingAddress.frame = frame2;
        ]; 
    
 

【讨论】:

这确实不是故障安全的,因为您可能会欺骗切换到复制其中一个 if 语句,从而使您的界面对象额外向下移动 100 点。但你明白了要点。 @George:如果对您有帮助,请不要忘记将其标记为答案(单击绿色复选框)!然后它会告诉其他人您的问题已解决。

以上是关于使用 UISwitch 制作动画的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollview 中的 UISwitch 几乎无法使用

使用 UISwitch 切换 iOS 7 状态栏

IOS UISwitch 控件

静态 UITableViewCell 中的 UISwitch 生成错误

使用 UISlider 作为 UISwitch(两个状态对象)

UipanGesture 不适用于 Uiswitch