菜鸟教程小白 发表于 2022-12-13 00:19:36

ios - 如果无法适应 AutoLayout 中的固有尺寸,则折叠 View


                                            <p><p>我在 View 中有 <code>UILabel</code> 和 <code>UIButton</code> 可以有不同的大小,如果标签不能适合当前帧内的所有内容,我希望标签完全隐藏仅使用自动布局。所以基本上我希望它遵循它的内在尺寸,如果它缩小,它应该直接缩小到零而没有任何中间宽度。所需示例:</p>

<p> <a href="/image/kyqTf.png" rel="noreferrer noopener nofollow"><img src="/image/kyqTf.png" alt="example non-collapsed"/></a>
<a href="/image/JBfEY.png" rel="noreferrer noopener nofollow"><img src="/image/JBfEY.png" alt="desired collapsed view"/></a> </p>

<p>相反,我正在缩小它并尝试尽可能多地显示:</p>

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

<p>是否可以只使用自动布局?如果不是,为什么? </p>

<p>我尝试在标签上添加零宽度约束并将其优先级设置为小于标签的抗压性,但这不起作用。我认为一旦 Autolayout 引擎打破了固有尺寸规则,我的零宽度就会被遵循,但似乎我错过了一些东西。</p>

<p>编辑:我会接受将标签嵌入到一些 <code>UIView</code> 子类中,这些子类可以检查 subview 的内部大小并在代码中进行布局,但我正在寻找最干净的解决方案。</p >

<p> <a href="https://gist.github.com/ReDetection/fa16aa8fa287c2822f5b47e438660562" rel="noreferrer noopener nofollow">You can check out xib source in this gist</a> </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我目前的解决方案是将标签嵌入自定义 <code>UIView</code> 并在其布局期间直接检查大小是否小于内部大小:</p>

<pre><code>@implementation AutocollapsibleView

- (void)layoutSubviews {
    UIView *subview = self.subviews.firstObject;
    if (self.bounds.size.width &lt; subview.intrinsicContentSize.width) {
      subview.frame = CGRectZero;
    } else {
      ;
    }
}

@end
</code></pre>

<p>幸运的是,它可以与 <code>IB_DESIGNABLE</code> marco 一起使用,所以我可以立即在 Interface Builder 中看到结果</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如果无法适应 AutoLayout 中的固有尺寸,则折叠 View ,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/43037918/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/43037918/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如果无法适应 AutoLayout 中的固有尺寸,则折叠 View