Ios SetNeedsLayout()导致其他视图不更新
为什么self.view.setNeedsLayout函数会使文本字段的位置出错?它会导致文本字段不移动。布局更新是否太晚?如果是的话,我该如何解决这个问题。我尝试了self.view.setlayoutifneed,但也不起作用 设置textField的帧原点时是否调用过该行?您是否尝试在那里设置断点?如何将文本字段添加到视图中?对我来说,它似乎有一些约束约束,这就是为什么改变框架不起作用。是的,有一些约束添加到它。如果未调用self.view.setNeedsLayout,它将正确移动。这就是为什么我认为布局发生得太晚了。这与布局的时间无关。如果使用自动布局,手动设置框架将不起作用。您必须调整自动布局约束,而不是设置框架。??我不明白为什么没有setNeedsLayout它会工作。Ios SetNeedsLayout()导致其他视图不更新,ios,swift,autolayout,Ios,Swift,Autolayout,为什么self.view.setNeedsLayout函数会使文本字段的位置出错?它会导致文本字段不移动。布局更新是否太晚?如果是的话,我该如何解决这个问题。我尝试了self.view.setlayoutifneed,但也不起作用 设置textField的帧原点时是否调用过该行?您是否尝试在那里设置断点?如何将文本字段添加到视图中?对我来说,它似乎有一些约束约束,这就是为什么改变框架不起作用。是的,有一些约束添加到它。如果未调用self.view.setNeedsLayout,它将正确移动。这就
func keyboardWasShown(aNotification: NSNotification) {
self.view.setNeedsLayout() /* */
var info = aNotification.userInfo as NSDictionary
var kbSize = info.objectForKey(UIKeyboardFrameBeginUserInfoKey).CGRectValue().size
if self.containerViewController.frame != mainFrame! {
self.containerViewController.frame = mainFrame!
}
var aRect = self.view.frame as CGRect
aRect.size.height = aRect.size.height - kbSize.height
if CGRectContainsPoint(aRect, self.textField.frame.origin) == false {
self.textField.frame.origin.y = aRect.height - 30
}
}