• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-12 12:17:05 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

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

编辑 - 添加了一些代码

.h

NSTimer *updater;

.m

updater = [NSTimer scheduledTimerWithTimeInterval:1.0f/32.0f target:self selectorselector(gameEngine) userInfo:nil repeats:YES];


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

-(IBAction)action {
    [updater invalidate];
}



Best Answer-推荐答案


如果您使用自动布局,当重新应用约束时(可以由无害的事件触发,例如设置标签的 text 属性),所有内容都将被放回到 Storyboard中嵌入的约束定义它们的位置(假设您试图以编程方式移动 UIImageView 对象,只需更改它们的 framecenter 属性而不是通过更改约束)。

您可以通过以下两种方式之一解决此问题。

  1. 通过更改约束的 constant 属性然后调用父 View 的 layoutIfNeeded 方法来移动您的 UIImageView 对象,而不是而不是更改 UIImageView 本身的 framecenter 属性。如果在 Interface Builder 中为约束本身创建 IBOutlet 引用,这可以简化。

  2. 关闭自动自动布局,然后你可以使用 framecenter 属性,我怀疑你现在是这样。您可以通过打开 Storyboard、单击最右侧面板中的第一个选项卡并取消选中“使用自动布局”来关闭自动布局:

    enter image description here

第一种方法有点麻烦,而第二种方法可能看起来更容易,但自动布局是 iOS 开发的 future ,通过约束来掌握控件的移动可能是值得的。

关于ios - 为什么 NSTimer 失效后对象会重置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17494665/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap