2014-12-09 67 views
-1

我想以编程方式移动self.view的y位置(顶部约束)。但我没能发现我可以改变运行时间如何在自动布局中更改self.view约束?

self.view.frame = CGRectMake(0, -59, self.view.frame,size.width, self.view.frame,size.height); 

像这样的事情,但有约束的任何约束?

+0

你去哪里卡住了,说实话?你是否试图改变你的约束“常量”值?我在这里没有看到任何尝试...... – holex 2014-12-09 12:54:53

+0

我在中心有2个文本框。所以我想在键盘升起时向上移动。所以我想移动self.view了。改变约束我需要顶部约束对象,但我怎么能找到self.view约束 – 2014-12-09 13:00:49

回答

1

取一个新的UIView并在新的UIView中添加你的textfield。在主视图中添加新的UIViewself.view)。为新的UIView添加Constraint

现在你可以改变新UIViewconstraint编程,

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; 
     } 
    } 
1

你不应该移动视图控制器的视图。设置视图的框架是超视图的责任。对于视图控制器来说,这意味着定位self.view是周围视图控制器的责任(例如UINavigationController)。

而是在尝试移动内容以便键盘不隐藏任何内容时,应该将视图中的内容移动到正确的位置。但是,请记住,从iOS8和自定义键盘开始,键盘几乎可以有任何高度,因此您无法保证所有子视图都可以在屏幕上看到。大多数情况下 - 可能会有例外情况 - 在UIScrollView内移动文本字段并更改滚动视图的contentOffset以便当前第一响应者(当前正在编辑的文本字段)可见时更好。