【问题标题】:showing and hiding a UIView显示和隐藏 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;

【问题讨论】:

    标签: ios objective-c uiview uiviewanimation


    【解决方案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 很陌生
    猜你喜欢
    • 1970-01-01
    • 2012-02-25
    • 2018-06-20
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    相关资源
    最近更新 更多