[英]Objective C How to animate Subview with click in Button
我有一个问题:D。
我目前正在使用SplitViewController。 首先,我想在MasterView中隐藏TableViewController。 因此,我决定在情节提要中将SubView添加到tableView中,其中将显示一个小标签。
因此,在DetailView中做出选择并单击Button之后,我想隐藏子视图并显示tableView。 这一切都与动画有关。
所以这是我的代码:
在TestTableViewController.m中
-(void)AnimateView{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.1];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
fixedView.frame=CGRectMake(-500, 0,0,0);
[UIView commitAnimations];
NSLog(@"test");
并在TestDetailViewController.m中
- (IBAction)attractionButton:(UIButton *)sender
{
TestTableViewController *testTableViewController = [[TestTableViewController alloc]init];
[testTableViewController AnimateView];
}
我得到了NSLog“测试”,但是动画不起作用。 fixedView是我的Subview,我将其拖动到头文件中,因此它是IBOutlet。
到目前为止谢谢你。
因此,您似乎实例化了一个新的ViewController并尝试立即执行此动画:
TestTableViewController *testTableViewController = [[TestTableViewController alloc]init];
[testTableViewController AnimateView];
问题是您甚至没有显示该视图控制器(它的视图不在屏幕上的任何地方),因此通常看不到任何动画。
根据我的理解,您已经在屏幕上显示了该视图控制器的另一个实例(对吗?)-这就是您需要使用的一个实例。 以某种方式(例如,属性)将其指针传递给TestDetailViewController,然后使用该对象调用您的动画方法。
PS。 我建议您以小写字母开头命名所有方法;)
您可以尝试的是:
[UIView animateWithDuration:0.15f animations:^{
fixedView.frame=CGRectMake(-500, 0,0,0);
}completion:^(BOOL finished){
}];
您确定不带第一个参数就可以调用[UIView beginAnimations:....]吗?
问题是,您没有在详细信息视图控制器中引用同一主视图控制器。
您正在IBAction
中创建另一个。
为了掌握您的(“原始”)主视图控制器,请在详细视图控制器中执行以下操作:
创建一个ivar:
TestTableViewController *masterViewController;
然后引用它:
masterViewController = (TestTableViewController*)[[[self.splitViewController.viewControllers lastObject] viewControllers] objectAtIndex:0];
例如:
- (IBAction)attractionButton:(UIButton *)sender
{
masterViewController = (TestTableViewController*)[[[self.splitViewController.viewControllers lastObject] viewControllers] objectAtIndex:0];
[masterViewController AnimateView];
}
最后,在您的AnimateView
方法中,更改以下内容:
[UIView animateWithDuration:0.1f animations:^
{
fixedView.frame = CGRectMake(-500, 0, 0, 0);
}
completion:nil];
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.