将子视图设置为中间

时间:2015-05-29 13:26:26

标签: ios objective-c animation uiviewanimation subview

我有一个我在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];
}

enter image description here

1 个答案:

答案 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];