【问题标题】:Animating with UISwitch使用 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 元素。

标签: iphone objective-c ios uiswitch


【解决方案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:如果对您有帮助,请不要忘记将其标记为答案(单击绿色复选框)!然后它会告诉其他人您的问题已解决。
猜你喜欢
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2014-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多