我有一个xib,其内容是这样的:
橙色视图是 view_b ,这是UIView
,其中包含UITextField
,而UITableView
是 < EM> tblv_a 即可。 view_content 是包含两个视图的UIView。
我想要完成的是调整 view_content 及其子视图&#39;键盘显示时的大小,即用户在UITextField
中编辑时的大小。我尝试使用keyboardDidShow:
中的以下代码执行此操作:
NSDictionary* info = [notification userInfo];
CGRect kbRect = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
CGRect convertContentRect = [self.view convertRect:CGRectFromString(str_contentViewRect) toView:self.view];
CGRect coverRect = CGRectIntersection(kbRect, convertContentRect);
self.view_content.frame = CGRectMake(CGRectFromString(str_contentViewRect).origin.x, CGRectFromString(str_contentViewRect).origin.y, CGRectFromString(str_contentViewRect).size.width, CGRectFromString(str_contentViewRect).size.height - coverRect.size.height);
self.tblv_a.height = self.view_content.height - self.view_b.height;
self.view_b.y = self.tblv_a.y_height;
然而,当我使用模拟器尝试结果时,它没有按预期工作,相反,它给出了以下结果:
在试图找出错误之后,我尝试在界面构建器中禁用自动布局,然后按预期工作,即:
我没有对视图设置任何限制,我检查了视图的框架,看起来是正确的。所以我想autolayout是问题的根源,但我不知道为什么会这样,有人可以帮忙吗?
如果我想启用autolayout来处理不同的屏幕尺寸,我应该如何解决这个问题?
谢谢!
( view_content &#39;背景颜色为浅灰色,而 tblv_a 为浅色)
答案 0 :(得分:0)
如果启用了自动布局,那么如果您不添加自己的布局,系统将添加默认约束。当约束到位时,您不应设置任何帧。如果需要移动视图或调整视图大小,则需要通过更改约束来实现。