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

ios - super View 边界的最小 x 值?


                                            <p><p>这个表达式“<strong>superview 边界的最小 x 值</strong>”在 <a href="https://developer.apple.com/library/ios/releasenotes/General/RN-iOSSDK-6_0/" rel="noreferrer noopener nofollow">Apple Documentation</a> 中是什么意思?关于 <code>UIScrollView</code> 中的自动布局?</p>

<blockquote>
<p>...some notes regarding Auto Layout support for UIScrollView:</p>

<ul>
<li><p>In general, Auto Layout considers the top, left, bottom, and right edges of a view to be the visible edges. That is, if you pin a view to
the left edge of its superview, you’re really pinning it to the
minimum x-value of the superview’s bounds. Changing the bounds origin
of the superview does not change the position of the view.</p></li>
<li><p>The UIScrollView class scrolls its content by changing the origin of its bounds. To make this work with Auto Layout, the top, left,
bottom, and right edges within a scroll view now mean the edges of its
content view.</p></li>
</ul>
</blockquote>

<p>1) 据我所知,默认情况下 View 的 <strong>bounds</strong> 是 (0, 0, width, height)。所以 x 是 <strong>0</strong>。 </p>

<p>2) 一个 View 怎么可能有 <strong>更多</strong> x 值以使其最小化?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>任何 View 的自动布局约束通常与 View 的 <strong><em>可见</em></strong> 边界有关,但是当涉及到 <code>UIScrollView</code> 时,自动布局约束与 ScrollView 的 <code>contentView</code> 相关。<br/>
<em>显然,因为 <code>scrollView</code> 是,嗯...应该滚动。</em></p>

<hr/>

<p>假设 <code>scrollView</code> 的 <code>contentSize</code> 类似于:</p>

<pre><code>myScrollView.frame = CGRectMake(0, 0, 100, 100);
myScrollView.contentSize = CGSizeMake(1000, 1000);
</code></pre>

<p>现在...<br/>
比如说,在这个 <code>scrollView</code> 中有一个 <code>subView</code>,类似于:</p>

<pre><code>UILabel *lblTest = initWithFrame:CGRectMake(0, 0, 50, 50)];
;
;
</code></pre>

<p>滚动前:</p>

<ul>
<li><code>myScrollView.contentOffset.y</code> 将是 <code>0</code></li>
<li><code>myScrollView.bounds.y</code> 将是 <code>0</code></li>
<li><code>myScrollView.frame.origin.y</code> 将是 <code>0</code></li>
<li><code>lblTest.frame.origin.y</code> 将为 <code>0</code>(<em>并且可见</em>)</li>
</ul>

<p>滚动后(<em>到底部</em>):</p>

<ul>
<li><code>myScrollView.contentOffset.y</code> 将更改为 <code>900</code></li>
<li><code>myScrollView.bounds.y</code> 将<strong>也</strong>为 <code>900</code></li>
<li><code>myScrollView.frame.origin.y</code> 将<strong>仍然</strong>为 <code>0</code></li>
<li><code>lblTest.frame.origin.y</code> 将是 <code>-900</code>(<em>不再可见</em>)</li>
</ul>

<p>这就是 Apple 文档的含义:</p>

<blockquote>
<p>The UIScrollView class scrolls its content by changing the origin of
its bounds.</p>
</blockquote>

<p>现在...<br/>
如果自动布局与 <code>UIScrollView</code> 的可见边界有关,那么无论您滚动多少,<code>UILabel</code> 都不会向上滚动。<br/>
但是……<br/>
由于 <code>UIScrollView</code> 中的 Autolayout 与 scrollView 的 <code>contentSize</code> 相关,因此 Autolayout 约束在其中与滚动功能相关。</p>

<p>所以...<br/>
当您在 <code>scrollView</code> 中为 <code>subViews</code> 使用 Autolayout 时,它将与 <code>scrollView</code> 的实际大小而不是可见大小有关。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios -superView 边界的最小 x 值?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/20298678/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/20298678/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - super View 边界的最小 x 值?