我想以编程方式移动self.view的y位置(顶部约束)。但我无法找到可以改变运行时间的任何约束
self.view.frame = CGRectMake(0, -59, self.view.frame,size.width, self.view.frame,size.height);
这样的东西但有约束力?
答案 0 :(得分:1)
您永远不应移动视图控制器的视图。设置视图的框架是superview的责任。对于视图控制器,这意味着定位self.view
是周围视图控制器的责任(例如UINavigationController
)。
相反,当尝试移动内容以使键盘不隐藏任何内容时,您应该将视图中的内容移动到正确的位置。但是,请记住,从iOS8和自定义键盘开始,键盘几乎可以具有任何高度,因此您永远无法保证所有子视图在屏幕上都可见。大多数情况下 - 可能有例外 - 这是一种更好的方法来移动UIScrollView
内的文本字段并更改滚动视图的contentOffset
以便当前的第一响应者(文本)当前正在编辑的字段是可见的。
答案 1 :(得分:1)
获取新的UIView
并在新的UIView中添加textfield
。在主视图(UIView
)中添加新的self.view
。为新Constraint
添加UIView
。
现在您可以通过编程方式更改新的UIView
constraint
,
IBOutlet NSLayoutConstraint * topConstraint;
或强>
NSArray * arrConstarint=self.view.constraints;
for (NSLayoutConstraint * constraint in arrConstarint)
{
if (constraint.firstAttribute==NSLayoutAttributeTop) {
// if problem then add constraint.firstItem or constraint.secondAttribute etc
constraint.constant=-59;
}
}