我正在研究一个在viewcontroller上有多个按钮的项目,我使用了autolayout。我希望所有按钮具有相同的宽度和高度,我有这样的水平/垂直间距:
多个设备上的结果如下:
对于这个例子我给了按钮一个背景颜色,但实际上它们将填充各种尺寸的图像。我有按钮的图像资源(@ 1x / @ 2x / @ 3x)。例如,@ 2x图像资源永远不会大于100宽度和75高度(点)。
用户可以更改某些按钮图像。所以我希望按钮大小与内部图像“独立”。按钮不应根据图像“内部”调整大小。
所以我想首先(自动)布局按钮,而不会让图像“填充”按钮,这样按钮就会在我的项目中为最大尺寸的图像提供最佳尺寸(对于提到的@ 2x图像资源) :100宽度和75高度点。)
当我自动布局按钮,然后用图像填充它们时,xcode“想要”让我因为错误的视图而更新帧。我不希望图像影响自动布局。
如果我只是在模拟器或真正的iphone上运行应用程序,它运行正常。但我有所有这些错位的观点警告。我该怎么办?我将如何告诉' Xcode(7.1)图像不应影响按钮的宽度和高度?
我觉得我对这个(自动)布局问题有一点点错误的方法,但我还是不能指责它。我想我犯了某种逻辑错误。
首先(自动)布局按钮然后“填充”图像是不错的做法?或者我应该用图像和(自动)布局填充按钮? 这里有一个宽度和高度相等的图像示例:
关于先前有关冲突约束的问题:
所以我希望这些按钮具有相同的宽度和高度:理想情况下为100宽度和75高度。宽度可以正常,但是当我使用autolayout用于不同大小的viewcontrollers(在其上有一个scrollview)时,高度有点困难。我想使用其他约束来说明&#39 ;;按钮的高度值不应低于75磅。如果我使用固定高度约束,等于或等于' 75分我得到了相同高度限制的冲突(当然)。我想我应该优先考虑,但我尝试过,但我还没有成功。
我该怎么办?
非常感谢帮助!
答案 0 :(得分:0)
当然,当设置两个高度限制时,你会遇到冲突,其中一个计算到屏幕宽度的1/3(≈107px,不包括iPhone 4上的填充),另一个强制执行的最小高度大于此价值(例如120px)。
幸运的是,使用优先级:
可以解决这个问题将固定高度约束的优先级设置为低于“大于或等于”约束优先级的值。这样,autolayout将仅在其常量大于或等于“大于或等于”约束的常量时选择固定高度约束。否则,“大于或等于”约束的常量将用作视图的高度。有道理,对吗? :)
通过对图像视图强制执行固定的高度和宽度,并将其内容模式设置为“Aspect Fit”,您可以按照第二个问题中的描述实现所需的行为。在Interface Builder中有一个下拉菜单:
在您的情况下,为图像视图提供固定尺寸的最佳方法是将所有四边固定到其超视图(因为superview具有明确定义的尺寸):
因此,当您将这些前导,尾随,顶部和底部约束应用于所有图像视图时,图像将根据约束自动调整大小,结果将如下所示: