菜鸟教程小白 发表于 2022-12-13 00:31:42

iOS 自动布局 : Can this be done with IB?


                                            <p><p>我正在尝试使用界面生成器创建以下自动布局:</p>

<p>在 View 的顶部:</p>

<ul>
<li>适合设备宽度的 ImageView </li>
<li> ImageView 是方形的(高度也等于设备的宽度)</li>
</ul>

<p>填充 ImageView 下方的其余空间:</p>

<ul>
<li>3 个等高按钮</li>
<li>它们一起填满了顶部正方形下方的其余空间</li>
</ul>

<p>这可以仅在 IB 中完成吗?</p>

<p>-斯科特</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>不,它不能,因为您无法在界面生成器中表达关系约束。 </p>

<p>除了 ImageView 的高度之外,您可以执行其他所有操作(几乎,请参见编辑)。您可以在 View 上设置一个恒定的高度约束(可能设置为 iPhone 屏幕的宽度),然后为其创建一个导出。 </p>

<p>在运行时,如果您在 iPad 上运行(我假设要求是在 iPad 和 iPhone 之间工作,而不是在纵向和横向之间工作,因为您的描述对横向没有意义)然后删除此约束并添加新的固定 ImageView 的高度与其宽度相同。 </p>

<p>以下是设置其余约束的方法。我假设您从一个仅包含其主视图导出的 ViewController 开始。 </p>

<ol>
<li>拖入图片 View ,默认填满屏幕。</li>
<li>使用固定菜单将 ImageView 的高度固定为 320(然后编辑创建的约束)。这是您创建导出的约束。 </li>
<li>拖入三个按钮</li>
<li>全部选择它们并平均固定高度</li>
<li>选择底部按钮,然后使用固定菜单将底部空间固定到 superView </li>
<li>选择该约束并勾选“标准”复选框。这将增大您的三个按钮以填充剩余空间(加上一点间距)。</li>
<li>选择所有三个按钮并固定宽度相同</li>
<li>选择一个按钮并将尾随空格固定到 superView 。和以前一样,选择此约束并勾选“标准”复选框。按钮将增长以填充 View 的宽度。 </li>
</ol>

<p>您希望它看起来像这样:<img src="/image/ZzOV9.png" alt="enter image description here"/> </p>

<p>出于某种原因,IB 在其中一个按钮上添加了高度限制,但不允许我删除。让三个按钮高度相等,并在运行时根据 ImageView 的间距和高度推导出每个按钮的高度似乎并不令人愉快。可能还需要在运行时删除该约束,或者我可能在一起抨击时遗漏了一些东西。无论如何,希望上面概述的原则是有帮助的。 </p></p>
                                   
                                                <p style="font-size: 20px;">关于iOS 自动布局 : Can this be done with IB?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/14325688/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/14325688/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iOS 自动布局 : Can this be done with IB?