显示和隐藏UIView

时间:2014-04-01 22:36:36

标签: ios objective-c uiview uiviewanimation

我使用下面的代码来定位UIView,其中包含各种按钮等。我在按钮的IBAction方法中显示此视图。

如何让用户点击按钮在默认位置显示UIView,然后,当用户再次点击按钮时,将UIView移回屏幕?

我是否在移动UIView开/关屏幕时做得最好?或者隐藏/显示控制器会更好吗?

我喜欢移动它的想法,因为它看起来像向下移动(不是它的动画或任何东西)。 Actualy我会如何设置动画以减慢移动速度?

CGRect f = self.optionsuiview.frame;
f.origin.x = 0;
f.origin.y = 42;
self.optionsuiview.frame = f;

2 个答案:

答案 0 :(得分:1)

  

我是否在移动uiview开/关屏幕时做得最好?或者隐藏/显示控制器会更好吗?

只有您或您的UX顾问才能回答......

通过更改视图框,您将以与显示视图相同的方式再次隐藏视图。只是为了隐藏它,您将帧设置为屏幕外的位置。同样的逻辑也适用于动画:

//显示

// calculate `f` here to a location off screen to animate to

[UIView animateWithDuration:0.2
                 animations:^{
        self.optionsuiview.frame = f;
    }
                 completion:^{
        self.optionsuiview.hidden = YES;
    }];

(请注意,我们会在动画后隐藏视图,因此不会将其视为点击目标)

反过来显示视图是相同的。将hidden设置为NO,然后将框架设置为可见位置。

答案 1 :(得分:1)

如果您创建按钮的属性(按住Ctrl键并拖动到标题文件),您可以使用它来更改按钮的状态,这样您就可以指定视图向上/向下移动的位置。

@property (strong, nonatomic) IBOutlet UIButton *yourButton;

在您的IBAction方法中可能看起来像这样

 -(IBAction)yourButtonPressed:(id)sender{

if (self.yourButton.selected){

   self.yourButton.selected = NO;

   [UIView animateWithDuration:0.3 animations:^{
   CGRect f = self.optionsuiview.frame;
   f.origin.x = 0;
   f.origin.y = 42;
   self.optionsuiview.frame = f;
 }];
}

if (!self.yourButton.selected){
   self.yourButton.selected = YES;

   [UIView animateWithDuration:0.3 animations:^{
   CGRect f = self.optionsuiview.frame;
   f.origin.x = 0;
   f.origin.y = 0;
   self.optionsuiview.frame = f;
  }];
}

我希望这种方式可以帮助你找到你想要的东西,

干杯,吉姆。