【问题标题】:Subview goes out of screen bounds iOS (Auto layout)子视图超出 iOS 屏幕边界(自动布局)
【发布时间】:2016-07-01 02:14:00
【问题描述】:

我正在一个单独的 xib 文件中开发一个组件,然后将其添加到我的控制器中。问题是我的内部容器的尾端超出了我的外部容器的范围。更准确地说,我的子视图宽度适合我的视图控制器,但子视图内的元素会超出该容器。约束全部设置为 0(顶部、底部、尾随、前导)。我已将容器的剪辑子视图设置为 true。下面的图片展示了这个问题。当我构建应用程序时,第一个图像上的右标签超出了容器限制。每个元素都一样。我玩过尾随约束,如果我将其设置为 -40,标签会出现在屏幕上,但我觉得必须有更好的解决方案。

我使用的尺寸等级是 Compact:Regular。

【问题讨论】:

    标签: ios iphone swift autolayout


    【解决方案1】:

    实际上,您想出了正确的解决方案。对于标签或图像视图(可以根据内容隐式确定其大小的组件)之类的组件,只需在每个维度中设置一个约束即可。在您的情况下,设置尾随就足够了,例如,label 的中心 Y。其余的将取决于标签内容本身

    更新

    看看Apple's guide on autolayoutIntrinsic Content Size

    【讨论】:

    • 是的,但我遇到的问题是,当我将尾随设置为 0 时,它实际上不是 0,而是标签从屏幕上消失(例如,如果您将其设置为 -20 或其他值)。如果我要从左到右组装元素,这不会有问题,但我需要将标签固定在屏幕的右边缘。
    • 在这种情况下,问题出在其他地方,而不是尾随约束。你还有什么限制?
    • 我已经设法通过代码而不是故事板添加子视图来修复它。我找不到其他解决方案。
    • 就像我说的,问题出在您在情节提要中创建约束层次结构的方式上。您没有检查属性“在构建时删除”吗?
    • 我根本没有更改约束,我只是从 stroyboard 的视图中删除了该类并通过代码添加它。由于某种原因,我的内部容器(子视图)的宽度大于容器。一旦我通过代码添加它,它就会根据屏幕的宽度正确计算。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多