ios - 如何在 Xcode Interface Builder 中设置约束,以便 View 相应地改变它们的宽度或高度?

标签 ios xcode xamarin.ios xamarin interface-builder

我正在使用 Xamarin Studio 进行 iOS 开发,我刚刚开始使用 Xcode Interface Builder,它让我很头疼。我的 Xcode 版本是 5.1.1(5B1008),我在 Xamarin Studio 5.5 build 227 和 Xamarin.iOS 8.2.0.193 Starter Edition 上。

我无法理解如何使用自动布局功能,我已经阅读了教程,大多数人都说,将元素拖到 View 中,单击 Pin 图标,设置约束并完成它。

但是我添加的元素并没有像我希望的那样结束。

例如,假设我想创建一个带有 ScrollView 的 View ,它将在其中显示标签和文本字段,就像它是一个表单一样,通过拖放元素想象我最终得到这样的东西:

enter image description here

我想要的布局是每个标签和文本字段的左右间隔为 11 dps,无论方向如何,每个标签和文本字段之间的间隔也为 11 dps,初始标签为 50 dps除了 ScrollView 的顶部。

每个元素的高度应始终相同 (20 dps),但它们的宽度必须根据左右约束发生变化。

我的布局定义到此结束。

现在让我们开始定义左右约束以及高度。我所做的是选择所有标签和文本字段,我固定左右两侧并将它们的高度设置为相同的值:

enter image description here

但是我得到的是这样的:

enter image description here

生成的布局看起来与我想要的完全不同,每个元素的宽度都设置为相同的大小,正确的值没有意义,我说是 11 dps,但我得到的值是 187、173 和 228。

即使我设置了顶部和底部约束,正确的约束看起来还是一样的:

enter image description here

我该如何解决这个问题?我已经删除并从头开始了好几次,但我无法理解我做错了什么。一些技术语言有时会给我带来挑战(我不是以英语为母语的人)所以我不知道我的解释是否有所不同。

我查看过的一些教程链接是 this , thisthis .

最佳答案

您需要让 Interface Builder 更新这些元素的框架。所有那些黄线/数字都是当前不满足的约束 - 元素的框架与约束要求不匹配。

但是,在要求 IB 更新框架之前,通常最好确保先设置好所有约束。

在这里,我已经设置了你描述的所有约束,但我还没有要求 IB 更新框架:

constraints unsolved

在这里,我要求 IB 更新顶级 View 中所有 View 的框架:

constraints solved

如果我选择 subview ,我可以看到约束现在显示为蓝色,表示它们已满足:

solved constraints visible

关于ios - 如何在 Xcode Interface Builder 中设置约束,以便 View 相应地改变它们的宽度或高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26306481/

相关文章:

ios - native 链接错误无法为 XXX 创建紧凑展开,不使用标准框架 (MT5209)

ios - 如何在iOS中提醒用户有关RAM硬盘或电池的信息

ios - 解析 becomeInBackground 将 currentUser.sessionToken 设置为 null

ios - iOS 上带页面控件的导航栏

c# - 在 MonoTouch 中的编译时检测 JIT

iphone - 带 MonoTouch 的 XCode 4 界面生成器

ios - “pod install”卡在 'Receiving Objects'

ios - 如何使用 AFNetworking 2.5 发送 XML PUT/POST 请求

ios - TableView 的单元格未显示

ios - 合并多个音频文件以在iOS上实时播放