视图应显示在另一个视图下方

时间:2015-09-22 13:30:07

标签: ios

我有2个视图:默认的VC视图和另一个视图'view2'。现在我想要一个功能,我可以在默认视图下看到'view2',并且当前视图的框架应该相应地调整大小。我是新的到iOS但我知道基本概念很好。所以我做了一些研究,这就是我想要做的。

单击textField应显示如上所述的view2。

    textFieldDidBeginEditing:

这将使用的代表。

    [textField resignFirstResponder];//keyboard
    textField.inputView = view2;
    [UIView animateWithDuration:1.0
                     animations:^{
                         _mySubView.frame = CGRectMake(0, 300,self.view.frame.size.width , 320);
                     }];//For animation

但我无法像上面提到的那样获得完美的功能。

2 个答案:

答案 0 :(得分:0)

您需要在当前视图控制器中进行view2的子视图。

[UIView animateWithDuration:1.0
                     animations:^{
                          View2 *_mySubView=[View2 alloc]init];

                         _mySubView.frame = CGRectMake(0, 300,self.view.frame.size.width , 320);
                         [self.view addsubview:_mySubview];

                     }];

答案 1 :(得分:0)

我完成了它并且我找到了两种方法:第一种方法是基于创建所需约束的出口,第二种方法是使用' NSLayoutConstraint'类方法:

    +(instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c;

实际上这种方法是基于公式A = B * m + C,其中        m =乘数,C =常数。

所以,让我说我有一个观点' view1'现在放在中心,默认的viewController视图'查看'。在开始时隐藏view1。如果我想要一个功能,我点击我的textField,我应该看到我的view2从底部出现那么我需要做的就是设置' Y'我的view2坐标超出默认视图的高度:

    view2.frame = CGRectMake(0,self.view.frame.size.height+someValue,width,height);

之后只需使用上述方法:

     NSLayoutConstraint *view2Position = [NSLayoutConstraint constraintWithItem:_grayView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1.0f constant:someNegativeValue];
[self.view addConstraint:view2Position];//Make sure the negative value contains whole view(view2) on the view(view)

要添加动画,请在动画块中添加以下方法:

    [view2 layoutIfNeeded];

所以,基本上在这里:
A = view2
B =查看
m =乘数1.0f; //这里它乘以视图的底边位置
c =一些负值