菜鸟教程小白 发表于 2022-12-13 02:35:53

IOS。无论导航栏如何,都进行布局约束以粘合到状态栏底部 + X


                                            <p><p>我有一堆 ViewController ,它们的布局略有不同,但对顶部 UILabel 的垂直位置有相同的要求。状态栏始终为 X(=70) 个单位。这些 ViewController 可能会添加到带有导航栏的导航 Controller 中。</p>

<p>如何创建一个相对通用的布局约束来考虑导航栏,这样无论 ViewController 是否在导航堆栈中,我的标题始终是状态栏的 X 个单位?</p>

<p>(我知道我可以在运行时更改现有约束的常量,但这对于很多带有 xibs 的 Controller 来说可能有点问题。我正在寻找更通用的东西,最好在界面生成器中)</p>

<p>我正在使用带有安全区域指南的 iOS 11 SDK。</p>

<p>请查看图片以获得更清晰的信息。</p>

<ol>
<li>状态栏只有 X 个单位到状态栏。安全区顶部有一个约束,X 为常数。</li>
</ol>

<p> <a href="/image/fYvIK.png" rel="noreferrer noopener nofollow"><img src="/image/fYvIK.png" alt="1.Status bar only"/></a> </p>

<ol 开始=“2”>
<li>状态栏+导航栏。安全区域的顶部再次受到限制,但这次为了得到我想要的结果,我必须从 X 中减去 navbar.height。常量 X - navbar.height。</li>
</ol>

<p> <a href="/image/GJXxN.png" rel="noreferrer noopener nofollow"><img src="/image/GJXxN.png" alt="2. Status bar + navigation bar"/></a> </p>

<p>基本上,我会寻找可以根据导航栏的存在自动调整约束常数的东西。也许有可能通过几个可以“轻松”从 xib 复制到 xib 的约束来实现这一点。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>如果您可以选择在代码中设置它,您可以使用这个简单的技巧:</p>

<pre><code>topLabel.topAnchor.constraint(equalTo: self.view.topAnchor, constant: UIApplication.shared.statusBarFrame.height + 70).isActive = true
</code></pre>

<p>所以基本上你将它限制在 View 的顶部(跳过 topLayoutGuide 和安全区域指南)到常量加上状态栏的高度。</p>

<p>请注意,如果您允许横向模式,或者存在隐藏状态栏的 View ,则必须添加更多代码来处理这些情况。</p></p>
                                   
                                                <p style="font-size: 20px;">关于IOS。无论导航栏如何,都进行布局约束以粘合到状态栏底部 &#43; X,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/46243535/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/46243535/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: IOS。无论导航栏如何,都进行布局约束以粘合到状态栏底部 &#43; X