我有一个我在xib文件中创建的子视图。它位于屏幕中间,我最终想要它。我试图设置它的动画,以便当按下按钮以显示视图时它从底部移动到中间,并且我希望在视图关闭时它动画到底部。现在的样子,它从中间开始,它在xib中并从那里开始动画。我怎样才能让它从底部开始并移到中间?
在viewDidLoad中:我设置了起始帧。
CGRect newFrame = self.findFriendView.frame;
newFrame.origin.y += 1000;
self.findFriendView.frame = newFrame;
self.findFriendView.hidden = YES;
以下是按下按钮以显示子视图的方法。
- (void)addFriend {
self.followersTableView.userInteractionEnabled = NO;
self.findFriendView.hidden = NO;
CGRect newFrame = self.findFriendView.frame;
newFrame.origin.y -= 1000;
[UIView animateWithDuration:1.0
animations:^{self.findFriendView.frame = newFrame;}
completion:nil];
}
答案 0 :(得分:0)
这似乎是一种非常奇怪的做法。为什么不在故事板中创建第二个视图控制器并将其显示为模态表单?
然后您可以执行以下操作:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"iPad" bundle:nil];
YourNewViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"YourNewViewControllerID"];
viewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
viewController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentViewController:viewController animated:YES completion:nil];
如果您需要将任何数据发送到新控制器,您可以将它放在新控制器的.h中:
@property (nonatomic, readwrite, assign) NSDictionary * IncomingData;
然后在主视图中创建一个包含所需数据的NSDictionary,并使用以下行发送它(将它放在presentviewcontroller之前):
viewController.IncomingData = tempDict;
编辑:
OP不使用故事板,而不是:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"iPad" bundle:nil];
YourNewViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"YourNewViewControllerID"];
你需要这样做:
YourNewViewController = [[YourNewViewController alloc] initWithNibName:@"YourNewViewController" bundle:nil];