【问题标题】:How to autolayout in Xcode buttons filled with different sized images?如何在填充不同大小图像的 Xcode 按钮中自动布局?
【发布时间】:2016-01-29 19:58:49
【问题描述】:

我正在开发一个视图控制器上有多个按钮的项目,并且我使用了自动布局。我希望所有按钮的宽度和高度都相同,并且我的水平/垂直间距如下:

在多个设备上的结果是这样的:

例如,我给按钮设置了背景颜色,但实际上它们会被各种尺寸的图像填充。我有按钮的图像资源(@1x/@2x/@3x)。例如,@2x 图片资源永远不会大于 100width 和 75height(点)。

用户可以更改某些按钮图像。所以我希望按钮大小与里面的图像“独立”。按钮不应根据“内部”图像调整大小。

所以我想首先(自动)布局按钮,而不是图像“填充”按钮,以便按钮将具有适合我项目中最大尺寸图像的最佳尺寸(对于提到的 @2x 图像资产:100width&75height 点)。

当我自动布局按钮,然后用图像填充它们时,xcode “希望”让我更新框架,因为视图放错了位置。我不希望图像影响自动布局。

如果我只是在模拟器或真正的 iphone 上运行应用程序,它运行良好。但我有所有这些错位的观点警告。我该怎么办?我将如何“告诉”Xcode(7.1) 图像不应影响按钮的宽度和高度?

我觉得我对这个(自动)布局问题的方法有点错误,但我还不能解决这个问题。我想我犯了某种逻辑错误。

首先(自动)布局按钮然后“填充”图像是一种好习惯吗?或者我应该用图像填充按钮然后(自动)布局? 这是一个具有相同宽度和高度的图像的示例:

关于前面关于冲突约束的问题:

所以我希望这些按钮具有相同的宽度和高度:理想情况下为 100width 和 75height 以磅为单位。宽度没问题,但是当我为不同大小的视图控制器(带有滚动视图)使用自动布局时,高度有点困难。我想使用“说”的附加约束;按钮的高度值不应低于 75 点。如果我使用固定高度约束,“等于或高于”75 分,我会与等高约束发生冲突(当然)。我想我应该优先考虑,但我试过了,但我还没有成功。

我应该如何进行?

非常感谢您的帮助!

【问题讨论】:

    标签: uibutton uiimage autolayout constraints xcode7


    【解决方案1】:

    问题一:

    当然,在设置两个高度约束时,您会遇到冲突,其中一个计算为屏幕宽度的 1/3(在 iPhone 4 上约为 107px,不包括填充),另一个强制执行大于此的最小高度值(例如 120 像素)。

    幸运的是,使用 priorities 可以解决这个问题:

    将固定高度约束的优先级设置为低于“大于或等于”约束优先级的值。这样,只有当其常数大于或等于您的“大于或等于”约束的常数时,自动布局才会选择固定高度约束。否则,您的“大于或等于”约束的常数将用作视图的高度。有道理,对吧? :)

    问题2:

    您可以通过为图像视图强制执行固定的高度和宽度并将其内容模式设置为“Aspect Fit”来实现第二个问题中所述的所需行为。在 Interface Builder 中有一个下拉菜单:

    在您的情况下,为图像视图提供固定尺寸的最佳方法是将所有四个边固定到其父视图(因为父视图具有明确定义的大小):

    因此,当您将这些前导、尾随、顶部和底部约束应用于所有图像视图时,图像将根据约束自动调整大小,结果将如下所示:

    【讨论】:

    • 感谢您的明确答复。这几乎是我需要的答案,但不完全是我所追求的。那是因为我的问题陈述得很糟糕。所以我会相应地更新/编辑我的问题(明天)。提前感谢您查看我更新的问题!
    • 您找到解决问题的方法了吗?
    • 感谢您的提问!最近几天我正在尝试更新我的自动布局技能和知识。我已经更新了我的问题,希望它能弄清楚我想要什么。我仍然担心这会有点令人困惑,确切地知道我的意思。如果需要,我会提供更多信息
    • 太棒了!我今晚看看能不能想出一个解决办法……:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多