【问题标题】:iOS autolayout - gap between image and top of the screen, despite constraints setiOS自动布局 - 尽管设置了约束,图像和屏幕顶部之间的间隙
【发布时间】:2015-05-20 13:12:40
【问题描述】:

我想将一张图片放在屏幕的顶部。我已将其模式设置为宽高比,因为我想保留原始比例。我还将左、上和右约束设置为 0:

尽管顶部约束设置为 0,但图像和屏幕顶部之间有很多空白空间,这绝对不是我想要的:

只有当我将最高约束设置为大约“-100”时,我才会得到类似于我想要实现的东西:

您能否解释一下这种不直观的行为,并告诉我应该怎么做才能将图像放置在屏幕顶部而没有任何间隙 - 就像上面的图像一样。

【问题讨论】:

    标签: ios xcode storyboard autolayout


    【解决方案1】:

    如果您仍然遇到此问题,值得一试。

    点击您的 ViewController,然后取消选中以下属性。看看这是否能解决问题。

    【讨论】:

    • 值得一试,我不确定您是否在 tableView 或其他受这些设置影响的对象中有图像。我想它必须与自动布局相关。 ;(
    【解决方案2】:

    从您的屏幕截图中可以看出,您的图像框架比图像内容大得多。如果您想拥有该框架,请考虑将Aspect Fill 设置为图像模式。否则你应该设置以下约束:

    希望这会有所帮助。

    【讨论】:

    • 也许你的图片本身有空格?
    • 不,事实并非如此。请看一下我的最新答案,它是您的稍微修改的解决方案,它解决了问题。
    • 这对我帮助很大!感谢您的帖子。
    【解决方案3】:

    经过一些试验,我想出了一些我最初想要的东西的 99% 的错误。左、上、右约束必须设置为 0,纵横比约束也必须启用。在“缩放填充”模式之上。除了您必须自己计算正确的图像比例之外,这非常有效。

    【讨论】:

    • 你在不同的手机结果上试过这个吗?特别是 iPhone 4(3:2 比例)​​与 iPhone 5/6/6+(16:9 比例)与 iPad(4:3 比例),它们具有不同的纵横比。使用比例填充时,您可能会发现您最终会在某些设备上拉伸或收缩图像,除非您针对不同的纵横比进行编码。您可能会接受它的拉伸/收缩,尽管它会略微收缩。您可以在 iPhone 和 iPad 上克服其中的一些问题,方法是使用尺寸等级并将宽高比约束设置为紧凑宽度与常规宽度的不同。这留下了 iPhone 4 v 5/6/6+ 的问题。
    • 谢谢罗里,我考虑到了这一点。
    【解决方案4】:

    这似乎并不容易解决:How do I autoresize an image, but at the top of the ImageView (programmatically in Xcode)?

    问题是你真的想要同时填充和顶部。

    我的建议是使用您的 UIImageView 并为纵横比以及您已经拥有的内容添加一个约束。然后从这个约束中按住 Ctrl 并拖动到视图控制器的 .h 文件中并创建一个 IBOutlet。

    这为您提供了一个 IBOutlet,您可以在代码中使用它来调整 UIImageView 的纵横比。

    当您在代码中加载图像时,检查图像并计算其纵横比。将约束 IBOutlet 常量设置为匹配。然后这应该会强制 UIImageView 将自己的纵横比与图像对齐,然后约束应该将其全部拉到位。

    【讨论】:

    • 谢谢,但这对我来说似乎有点过于复杂了。老实说,我还没有检查它是否有效。我仍然相信有一个更直接的解决方案。否则我会对 ios 自动布局功能感到非常失望。我认为我描述的问题很常见......
    • 自动布局效果很好。您的问题是您想要在比您的缩放图像更大的视图内布局缩放图像位置。似乎没有设置说将缩放图像放在包含它的视图的顶部、左侧、底部、右侧等...因此我认为您需要调整图像视图的纵横比以匹配您的图像,然后它将所有布局都很好。
    • 你是对的,这看起来很复杂,有人可能有更好的方法。
    猜你喜欢
    • 1970-01-01
    • 2019-09-19
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多