【发布时间】:2014-10-12 03:07:09
【问题描述】:
我的应用程序布局存在问题,这有点难以解释。当应用程序第一次启动时,这就是我显示的内容:
用户点击“创建个人资料”后,我会为这些按钮设置动画并显示注册表单:
不用说,按钮现在不在其“自然”位置。但是请注意,文本字段是 - 这是我将它们放置在情节提要中的位置,但是当视图首次加载时,我将它们隐藏起来。动画效果很好,但是当用户将焦点放在文本字段并且键盘隐藏该字段时,我需要向上滚动视图。如何触发这个错误的细节有点难以解释,所以我设法把它归结为似乎是一个重绘事件,除了它不是......让我试着解释一下。
首先,当键盘即将显示时会发生以下情况:
- (void)keyboardWillShow:(NSNotification*)notification
{
CGRect frame = self.view.frame;
frame.size.height -= 1;
self.view.frame = frame;
}
请注意,这只是一个测试,可能是我发现的仍然会触发错误的最小测试。它所做的只是调整视图的大小。我希望视图完全一样,少一个像素,对吧?错误的。这是我得到的:
也就是说,所有元素都回到了它们的“自然”位置,完全忽略了它们之前的位置。我的第一个猜测是窗口似乎正在重绘,所以我尝试了这个:
- (void)drawRect:(CGRect)rect
{
[super drawRect:rect];
NSLog(@"View was drawn");
}
但这只会在第一次绘制窗口时触发,而不是在发生这种奇怪行为时触发。为了理解我所说的“自然位置”,这是我在故事板中的内容:
您还可以看到我没有使用约束和我的视图的底层结构:
整个设置的完整代码非常广泛,因此展示起来根本不实用。但是,我如何为子视图设置动画,就像我在 keyboardWillShow 中所做的那样继续更改它们的框架,并将它们的位置设置为我需要的任何位置。
有什么想法吗?
【问题讨论】:
-
顺便说一句,如果有人知道如何减少这些图像..
标签: ios objective-c xcode uiview xcode-storyboard