菜鸟教程小白 发表于 2022-12-13 00:25:03

ios - 更改一个 subview 的大小后如何触发自动布局?


                                            <p><p>我正在制作一个顶部有一个搜索栏的 ViewController 和一个填充 View 其余部分的表格 View 。</p>

<p> <a href="/image/GkKI2.png" rel="noreferrer noopener nofollow"><img src="/image/GkKI2.png" alt="enter image description here"/></a> </p>

<p>现在我需要可配置搜索栏的可见性。我正在做的事情是这样的:</p>

<pre><code>- (void)viewDidLoad {
    ;
    // Do any additional setup after loading the view from its nib.
    if (!(self.bShowSearchBar)) {
      ;
      CGRect frameSearchBar = self.searchBar.frame;
      frameSearchBar.size.height = 0;
      ;
      NSLog(@&#34;self.searchBar.frame: %@&#34;, NSStringFromCGRect(self.searchBar.frame));
      NSLog(@&#34;self.tableView.frame: %@&#34;, NSStringFromCGRect(self.tableView.frame));
    }
}
</code></pre>

<p>当我隐藏搜索栏时,表格 View 的位置没有正确调整。 NSLog显示搜索栏的框架已经改变,而表格 View 的框架拒绝调整:</p>

<pre><code>2017-03-27 15:37:41.204413 App self.searchBar.frame: {{0, 0}, {375, 0}}
2017-03-27 15:37:41.204675 App self.tableView.frame: {{0, 44}, {375, 623}}
</code></pre>

<p>但它只是没有正确显示。搜索栏的位置仍然保留。</p>

<p> <a href="/image/gBtsK.png" rel="noreferrer noopener nofollow"><img src="/image/gBtsK.png" alt="enter image description here"/></a> </p>

<p>我也试过</p>

<pre><code> (1) ;
   ;

(2) ;
</code></pre>

<p>在我将搜索栏高度设置为 0 之后,它们都不起作用。</p>

<p>那么在我修改了一个 subview 的大小后,如何重新触发自动布局呢?提前致谢。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您不能在 Autolayout 中更改 View 的框架。如果您打开 Autolayout 选项,它将不起作用。您应该改为更改约束。</p>

<p>从你的照片来看,
<a href="/image/Spgk4.png" rel="noreferrer noopener nofollow"><img src="/image/Spgk4.png" alt="enter image description here"/></a> </p>

<p>按下控件并将此约束拖到您的 .m 文件中,使其成为属性。</p>

<p>当你想要做一些改变时,只需改变这个属性。</p>

<p>引用你的情况,在<code>viewDidLoad</code>中,你可以设置搜索栏的顶部等于-44,因为搜索栏的高度等于44,那么-44表示屏幕上方44点。通过这个改变,tableview 也将改变它的框架,因为它对搜索栏'bottom 的顶部约束等于 0。现在你隐藏了你的搜索栏并使 tableview 的框架正确。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 更改一个 subview 的大小后如何触发自动布局?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/43057193/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/43057193/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 更改一个 subview 的大小后如何触发自动布局?