菜鸟教程小白 发表于 2022-12-13 08:23:18

iphone - UIView 调整大小动画故障


                                            <p><p>我一直在努力解决我的 UIView 子类动画方式中的一个看似小故障。我的 View 设置如下:</p>

<pre><code>self.contentMode = UIViewContentModeRedraw;
self.contentStretch = CGRectMake(0.5f, 0.5f, 0.0f, 0.0f);
</code></pre>

<p> View 基本上是一个具有 3 像素笔划的矩形。因为我希望 View 在调整大小时不变形,所以我有 contentStretch 属性来指示 View 的中间。问题是,变形在增长时发生,但在收缩时却很平滑。</p>

<p>看起来我的动画 block 很简单;我有单独的增长和收缩。这是增长的 block :</p>

<pre><code>[UIView animateWithDuration:0.5 animations:^{
    CGRect newRect = CGRectMake(20, 100, 200, 70);
    ;
}];
</code></pre>

<p>这很难在帖子中描述,因此我组装了一个测试用例项目,该项目仅隔离与此相关的部分。如果有人想看看?</p>

<p> <a href="http://dl.dropbox.com/u/2798577/ViewResizeTest2.0.zip" rel="noreferrer noopener nofollow">http://dl.dropbox.com/u/2798577/ViewResizeTest2.0.zip</a> </p>

<p>您可以看到当您点击“增长”按钮时, View 的左侧在动画之前出现“故障”。虽然在这里清晰可见,但在我的实际项目中它有点糟糕。</p>

<p>我不确定这是我的代码中的错误还是框架的问题?希望是前者……</p>

<p>谢谢,
亚伦。</p>

<p><strong>更新</strong>
收到 Jacob 的慷慨反馈后,我回到了我的应用程序并将 contentMode 设置删除为 UIViewContentModeRedraw,并注意到它会在每次动画时运行 drawRect,也许初始帧是故障的一部分。所以现在动画很流畅,但是它动画到了错误的位置,挤压了两边。我已将链接项目更新为更准确地反射(reflect)我的应用程序中正在发生的事情。 </p>

<p>如果我不得不猜测,那么 contentStretch 属性似乎没有发挥作用。根据我的指示,它正在调整整个事物的大小,而不是内部的 CGRect 区域。谁能确认我是否使用正确?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我现在已经弄清楚了;这是遇到此问题的其他人的答案。</p>

<p>UIView 的 contentStretch 属性的文档并没有讲述完整的故事。就我而言,我理解 contentStretch 的目的是描述应该改变大小的区域的“样本”。相反, contentStretch 需要描述要调整大小的整个区域。在我写这篇文章时,现在这更有意义了,但以前对我来说并不明显。</p>

<p>因此,我原来的声明:</p>

<pre><code>self.contentStretch = CGRectMake(0.5f, 0.5f, 0.0f, 0.0f);
</code></pre>

<p>描述了一个没有宽度或高度的矩形!所以它实际上什么也没做。相反,我使用了一个包含大部分 View 边界的矩形,<em>except</em> 用于结束,我不想因为尺寸变化而扭曲:</p>

<pre><code>self.contentStretch = CGRectMake(0.2, 0, 0.7, 1);
</code></pre>

<p>请注意,它是一个矩形,从 x 轴的 20% 开始,在全高处跨越 70% 的宽度。在我的直肠需要的尺寸中,它很好地覆盖了它。</p>

<p>感谢 Jacob 建议删除 contentMode 属性;在这种情况下这是完全没有必要的。</p>

<p>干杯,
亚伦。</p></p>
                                   
                                                <p style="font-size: 20px;">关于iphone - UIView 调整大小动画故障,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/6619239/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/6619239/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iphone - UIView 调整大小动画故障