显示和隐藏 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的主要内容,如果未能解决你的问题,请参考以下文章