我有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
但我无法像上面提到的那样获得完美的功能。
答案 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 =一些负值