Iphone 无法仅为一帧设置动画,以便在单击按钮时向上滑动。
我正在尝试在我的应用程序中创建一个动画,它将向上滑动一帧到我想要的位置。框架上还有其他按钮和文本 我无法使用actionsheet进行此操作,因为它从窗口的最底部开始。我想创建的内容如下图所示 我要设置动画的帧是具有捕获模式的帧:文本 单击选项卡视图上的按钮“我希望此框架从选项卡视图顶部开始向上滑动”。再次点击按钮应该会使画面消失 到目前为止,我的代码看起来像Iphone 无法仅为一帧设置动画,以便在单击按钮时向上滑动。,iphone,objective-c,xcode,Iphone,Objective C,Xcode,我正在尝试在我的应用程序中创建一个动画,它将向上滑动一帧到我想要的位置。框架上还有其他按钮和文本 我无法使用actionsheet进行此操作,因为它从窗口的最底部开始。我想创建的内容如下图所示 我要设置动画的帧是具有捕获模式的帧:文本 单击选项卡视图上的按钮“我希望此框架从选项卡视图顶部开始向上滑动”。再次点击按钮应该会使画面消失 到目前为止,我的代码看起来像 -(IBAction)setting { NSLog(@"finalShare Button"); UIVie
-(IBAction)setting
{
NSLog(@"finalShare Button");
UIView *tempView;
CGRect tmpFrame;
tempView = [[[UIView alloc] initWithFrame:CGRectMake(0, 490, 320, 90)]
autorelease];
[tempView setBackgroundColor:[UIColor clearColor]];
[tempView setAlpha:.87];
tempView.hidden = YES;
[self.view addSubview:tempView];
tmpFrame = tempView.frame;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:.75];
tmpFrame.origin.y=390;
self.view.frame=tmpFrame;
[UIView commitAnimations];
}
我在这里面临的问题是,当我设置帧的动画以移动时,主视图会随之移动。这是我不想让它做的事
我是iPhone编程新手,请指导我如何解决这个问题。
或者有什么更好的方法可以做到这一点
感谢您重新设置主视图的框架,而不是临时视图
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:.75];
tmpFrame.origin.y=390;
tempView.frame=tmpFrame; //it should be tempView not self.view ie main view
[UIView commitAnimations];
不需要隐藏视图,只需在将其框架设置为y原点为480后将其添加为子视图即可。另外,不要使用旧的UIView动画方法;使用块 下面是一个以y原点0开始的视图示例。它被定位在与高度相等的负y位置,作为子视图添加,然后设置动画向下,以与从屏幕底部升起的键盘相接
// add to view while completely off-screen
CGRect unlockViewFrame = unlockView.frame;
unlockViewFrame.origin.y = -unlockViewFrame.size.height;
unlockView.frame = unlockViewFrame;
[self.view addSubview:unlockView];
unlockViewFrame.origin.y = 0.;
[UIView animateWithDuration:0.3 animations:^{
unlockView.frame = unlockViewFrame;
}];
反过来,使用完成块删除视图也是一样的
unlockViewFrame.origin.y = -unlockViewFrame.size.height;
[UIView animateWithDuration:0.3 animations:^{
view.frame = unlockViewFrame;
} completion:^(BOOL completion) {
[view removeFromSuperview];
}];
我注意到的另一件事是,您正在用代码做所有事情;考虑在接口生成器中做它。一个聪明人曾经告诉我,你不写的代码不会有任何bug,他是对的。在IB中创建视图并在需要时在代码中实例化它很容易:
NSArray* nibViews;
nibViews = [[NSBundle mainBundle] loadNibNamed:@"UnlockView" owner:self options:nil];
UnlockView *unlockView = [nibViews objectAtIndex:0];
也可以考虑使用ARC。不再自动释放
更改self.view.frame=tmpFrame将>编码到您的_view.frame中