菜鸟教程小白 发表于 2022-12-12 12:17:05

ios - 为什么 NSTimer 失效后对象会重置?


                                            <p><p>我有一个 <code>NSTimer</code>,它调用一个移动一些 <code>UIImageView</code> 的函数,当我使 <code>NSTimer</code> 无效时,我认为 <code> UIImageView</code> 会停在它们的位置,但它们会重置到 <code>StoryBoard</code> 设置的位置。</p>

<p>我做错了什么或没有包括或这是一个谜?</p>

<p>编辑 - 添加了一些代码</p>

<p>.h</p>

<pre><code>NSTimer *updater;
</code></pre>

<p>.m</p>

<pre><code>updater = ;


-(void)gameEngine {
    //move some images around
}

-(IBAction)action {
    ;
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>如果您使用自动布局,当重新应用约束时(可以由无害的事件触发,例如设置标签的 <code>text</code> 属性),所有内容都将被放回到 Storyboard中嵌入的约束定义它们的位置(假设您试图以编程方式移动 <code>UIImageView</code> 对象,只需更改它们的 <code>frame</code> 或 <code>center</code> 属性而不是通过更改约束)。</p>
<p>您可以通过以下两种方式之一解决此问题。</p>
<ol>
<li><p>通过更改约束的 <code>constant</code> 属性然后调用父 View 的 <code>layoutIfNeeded</code> 方法来移动您的 <code>UIImageView</code> 对象,而不是而不是更改 <code>UIImageView</code> 本身的 <code>frame</code> 或 <code>center</code> 属性。如果在 Interface Builder 中为约束本身创建 <code>IBOutlet</code> 引用,这可以简化。</p>
</li>
<li><p>关闭自动自动布局,然后你可以使用 <code>frame</code> 或 <code>center</code> 属性,我怀疑你现在是这样。您可以通过打开 Storyboard、单击最右侧面板中的第一个选项卡并取消选中“使用自动布局”来关闭自动布局:</p>
<p> <img src="/image/2SOFk.png" alt="enter image description here"/> </p>
</li>
</ol>
<p>第一种方法有点麻烦,而第二种方法可能看起来更容易,但自动布局是 iOS 开发的 future ,通过约束来掌握控件的移动可能是值得的。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 为什么 NSTimer 失效后对象会重置?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/17494665/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/17494665/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 为什么 NSTimer 失效后对象会重置?