【问题标题】:Autolayout Issue with Multiple Button Aligned Horizontally & Vertically with a Label多个按钮与标签水平和垂直对齐的自动布局问题
【发布时间】:2016-04-16 22:14:14
【问题描述】:

请查看为wCompact|hRegular 附加的不同屏幕的屏幕截图,我试图让它从几个小时开始工作,但没有取得任何成功。我的要求是在顶部有一个带有一些预定义边距的标签。虽然标签内容会在运行时呈现,但我知道内容大小,所以我认为实际上不需要resizable label。现在将有等距离的三排。在第一行和第三行中,将有两个高度和宽度相同的按钮,在第二行中,将有水平对齐的按钮。我已经在情节提要中设置了按钮图像和文本。控件对齐设置为水平 |垂直的。标签的约束是:
Pinned top space to superview, leading and trailing space equals to:8(superview), height equals:90.
按钮(查看交易)的约束是:
top space to label, bottom space equals to:8(New Launches Button) leading and trailing space equals to:8(superview) and 8(Place Request Button) respectively, and equal width and height for all buttons.
4.7 和 5.5 看起来不错,但对较小屏幕的输出不满意。如您所见,按钮图像的大小调整无法正常工作(按钮图像和文本之间的空间较大)。还有一件事是我不想设置标签的高度,因为这在 AutoLayout 中似乎是一种错误的做法。任何帮助将不胜感激。

【问题讨论】:

  • 对于较小的屏幕,您可能必须使文本变小...自动布局不够聪明,无法解决这个问题。
  • 您是否在设置内容拥抱和压缩优先级?你为什么要固定高度而不是让它成为内在的?
  • 我该怎么做@I'L"我请解释一下,在标签中我可以使用自动收缩属性,但我将如何在按钮中做到这一点。
  • @Wain:不,我没有设置,更新了截图。请指导,仍在学习 AutoLayout。
  • 由于标签的 90 到顶部约束使您的按钮无法正确调整大小,您可能希望为此使用代码(如当前视图高度的 20%)或强制按钮高度greater than or equal 并降低标签顶部约束的优先级,则按钮高度不会低于预定义高度

标签: ios objective-c autolayout storyboard


【解决方案1】:

你真的应该把它放到一个滚动视图中,这样如果高度太大,用户仍然可以通过滚动看到所有内容。你也不应该在标签上设置静态高度,你应该允许应用内在的内容大小。

向新的滚动视图添加子视图。将此子视图的宽度固定到滚动视图的宽度。不要固定高度。

将所有按钮和标签添加到这个新的子视图。将它们固定到视图的边缘,并允许固有内容大小应用限制。将各种项目设置为具有相等的宽度和高度。不要设置明确的高度或宽度(按比例或相等进行所有操作,以便自动布局可以选择合适的尺寸)。

【讨论】:

  • 也可以换一种方式,不行就试试。但是如果我想根据屏幕大小调整视图元素的大小怎么办。因为,我认为这是 AutoLayout 背后的主要思想。
  • 不是,自动布局可以确定大小,标签可以自动缩小字体大小
  • 实际上在我的情况下,我知道我的标签的内容大小。几乎不会是 10-15 个字,我担心的是按钮。
  • 为什么要缩小内容?如果有什么你应该设计的小,然后决定如何扩大规模。您还可以为不同的大小类设置不同的字体大小。
  • 对不起,缩小内容是什么意思。
【解决方案2】:

您应该为按钮设置纵横比,而不仅仅是相等的宽度和高度。在这种情况下,自动布局不会缩小图像。

【讨论】:

    猜你喜欢
    • 2019-10-30
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多