我使用下面的代码来定位UIView
,其中包含各种按钮等。我在按钮的IBAction
方法中显示此视图。
如何让用户点击按钮在默认位置显示UIView
,然后,当用户再次点击按钮时,将UIView
移回屏幕?
我是否在移动UIView
开/关屏幕时做得最好?或者隐藏/显示控制器会更好吗?
我喜欢移动它的想法,因为它看起来像向下移动(不是它的动画或任何东西)。 Actualy我会如何设置动画以减慢移动速度?
CGRect f = self.optionsuiview.frame;
f.origin.x = 0;
f.origin.y = 42;
self.optionsuiview.frame = f;
答案 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;
}];
}
我希望这种方式可以帮助你找到你想要的东西,
干杯,吉姆。