显示和隐藏 UIView

Posted

技术标签:

【中文标题】显示和隐藏 UIView【英文标题】:showing and hiding a UIView 【发布时间】:2014-04-01 22:36:36 【问题描述】:

我使用下面的代码定位了一个UIView,它将容纳各种按钮等。我在按钮的IBAction 方法中显示此视图。

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

我是在移动 UIView 开/关屏幕上做的最好的事情,还是只隐藏/显示控制器会更好?

我喜欢移动它的想法,因为它看起来有点像向下移动(不是动画或任何东西)。实际上,我将如何制作动画以使其变慢?

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

【问题讨论】:

【参考方案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;
  ];

我希望这种方式对您正在寻找的内容有所帮助,

干杯,吉姆。

【讨论】:

我试过这个但是在第一行给我错误 if (self.buttonname.selected) 我已经在 h 文件中声明了按钮的名称,但仍然出现错误【参考方案2】:

在屏幕上/关闭 uiview 时,我是在做最好的事情,还是只隐藏/显示控制器会更好?

只有您或您的用户体验顾问才能回答这个问题...

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

// 显示

// 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,然后将帧动画到可见位置。

【讨论】:

谢谢。但是,我试图弄清楚 if 语句用于判断用户是否单击了按钮,如果是,则显示或隐藏 uiview 任何想法? \ 使用self.optionsuiview.hidden 标志。 是的,我试过了,我试过 if (self.optionuiview.hidden = YES) 但是它在这条线上崩溃了 异常详情是什么? 没有,它只是在线程 1 断点 1.1 上崩溃,如果找出比这更多的细节,怎么可能呢?抱歉,我对目标 c 很陌生

以上是关于显示和隐藏 UIView的主要内容,如果未能解决你的问题,请参考以下文章

UIView在点击问题上显示和隐藏[关闭]

在键盘上计算和移动 UIView(显示/隐藏)

UIView 添加/删除子视图与隐藏/显示的速度

如何在 iPhone 中隐藏/显示带有动画的 UIView

以编程方式显示和隐藏容器UIView及其子视图

隐藏一个 UIView 并显示另一个