在iphone5兼容的应用程序中使用UIScrollview

时间:2012-09-18 08:37:36

标签: ios layout uiscrollview keyboard ios6

我在修改我的应用程序到新的iphone5布局时遇到问题,我做了以下过程:

  1. 添加了视网膜4“飞溅图像
  2. 使用“尺寸检查器”修改了故事板中的界面以更改小部件的锚定
  3. 使用iOS6“retina 4”模拟器测试应用程序。
  4. 应用程序按预期工作,除非用户弹出键盘编辑文本,我使用“拉伸scrollview”方法处理这种特殊情况,这似乎与我的小部件的“自动调整”属性不相容,这里是一个例子,来自iOS6模拟器,没有键盘和键盘:

    Interface with a middle item that is not anchored to fill the iphone5 screen

    以下是发生的事情:

    The mess that happens once the keyboard is shown

    我很确定这是一个连贯的行为,因为我的主视图被拉伸所以其中的其他项目在他们的锚定后被拉伸,事实是我想要具有我之前固定位置的相同行为(随着iphone5 gui扩展,所有小部件都固定在左上角),这有可能吗?

    如何解决以iphone 5兼容方式显示键盘和滚动隐藏内容的问题?

1 个答案:

答案 0 :(得分:0)

我遇到过类似的问题。根据我到目前为止发现的内容,我们可能需要在可滚动视图中删除视图上的所有约束,因为它的内容与scrollView的框架一起被调整大小。我知道在viewWillAppear中手动设置内部视图的框架会起作用,但是你会遇到一个iPhone4和iPhone5大小相同的视图(尽管它会滚动)。或者你可以在故事板中“固定内部视图的高度和引脚宽度”。

两种可行的方法。对不起,我无法确认这些,因为我放弃并重新设计这个问题 1.以编程方式向内部视图的子视图添加约束。程序性约束将允许您按比例“弹出”元素之间的距离。以编程方式添加约束时,您可以访问称为“乘数”的因子(不要与优先级混淆),我在stackoverflow上看到了其他人发布的内容。
2.您可以将Interface Builder中的internalView设计为带有.xib文件的单独viewController,然后使用storyboard将其作为嵌入式viewController加载到“containerView”对象,您可以将其作为新的“内部视图”放置到位“scrollView的。也许然后.xib将首先调整大小到正确的iOS设备,然后你可以使用它的框架来调整containerView的大小。

我的建议是在实施之前创建一个小测试用例,否则你最终会像我一样,花了几个小时走错路并面临死胡同。

更新12/4/12 不将ScrollView设置为ViewController的主视图,让您的生活更轻松。 - 相反,使ViewController.view成为一个虚拟/空白视图,并在该视图中嵌入一个scrollView。然后,在ScrollView中嵌入另一个视图(我的CustomView)。 CustomView包含所有可见控件和文本框和按钮。 CustomView上没有HEIGHT CONSTRAINT。