菜鸟教程小白 发表于 2022-12-12 21:52:22

ios - UIView bringSubviewToFront 打破 UIScrollView 的自动布局


                                            <p><p>我有一个相当简单的屏幕,我在屏幕顶部插入自定义 UINavigationBar 并在其下方插入内容区域。我正在使用 AutoLayout,并且我在视觉上声明了这样的关系:</p>

<pre><code>@&#34;V:|-0--0--0-|&#34;;
</code></pre>

<p>现在,这似乎可以完美运行,直到我尝试让另一个 View 从导航栏下方向下滑动。导航栏包含一个搜索字段,我希望搜索结果从导航栏下方向下滑动。就目前的代码而言,搜索结果在导航栏的顶部或前面向下滑动,看起来很奇怪。所以我尝试使用以下命令将导航栏推到索引堆栈的顶部:</p>

<pre><code>;
</code></pre>

<p>就动画而言,它完美无缺。搜索结果不再滑过导航栏,而是在内容区域的前面。当 _content 的 child 是 UIView 时,它似乎没问题。但是,当 _content 的 child 是 UIScrollView 时,这似乎在导航栏和内容区域之间引入了 20px 的边距。老实说,虽然导航栏的高度保持不变,但该空间的大小似乎与状态栏非常接近。我尝试使用许多不同的技术将导航栏放在前面,但是一旦导航栏和内容区域位于不同的平面上,它似乎打破了上面定义的 0px 的自动布局约束。</p>

<p> <a href="https://dl.dropboxusercontent.com/u/8314200/TestAutoLayout.zip" rel="noreferrer noopener nofollow">Here is a sample project</a>显示错误。查看第三项,“bringSubViewToFront 错误”。</p>

<p>有人知道怎么回事吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>20 点空间似乎与 <code>status bar</code> 有关,但我不确定为什么将 <code>navigation bar</code> 放在前面显然会使 ScrollView 插入其内容。无论如何,在您将导航栏放在前面之后,我可以通过添加这一行来修复它,</p>

<pre><code>_scrollView.contentInset = UIEdgeInsetsMake(-20, 0, 0, 0);
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - UIView bringSubviewToFront 打破 UIScrollView 的自动布局,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/23373207/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/23373207/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - UIView bringSubviewToFront 打破 UIScrollView 的自动布局