在设定时间间隔内重复一项功能

时间:2016-11-10 07:20:21

标签: ios swift

我已经使用Xcode / Swift几个星期了,我正在开发我的第一个小iOS游戏。没有什么可以尝试学习该程序和享受一些乐趣。这导致我的问题......

...我本质上希望我的应用程序中的背景图像随机更改(从数组中的一组值),但定时。例如,“背景图像每2秒更改一次。”

到目前为止,我已经看到了一些关于NSTimer的内容,但我不太清楚如何用我已经拥有的东西来实现它。

@IBOutlet weak var backview: UIImageView!

let BackNames = ["Back 1", "Back 2", "Back 3", "Back 4", "Back 5", "Back 6", "Back 7"]

let BackValue = Int(arc4random_uniform(7))

backview.image = UIImage (named: BackNames [BackValue])

所以是的,就像我说的那样,我知道如何让它为背景选择一个随机值,但只有当我点击我的按钮时它才会发生。想知道如何将时间特征与我的arc4random相结合。

谢谢!

3 个答案:

答案 0 :(得分:2)

尝试使用此图像动画:

var imgListArray :NSMutableArray = ["Back 1", "Back 2", "Back 3", "Back 4", "Back 5", "Back 6", "Back 7"]
for countValue in 1...7
    {

        var strImageName : String = "Back \(countValue).png"
        var image  = UIImage(named:strImageName)
        imgListArray .addObject(image)
    }

    self.imageView.animationImages = imgListArray;
    self.imageView.animationDuration = 1.0 // change as per your requirement
    self.imageView.startAnimating()

参考:https://stackoverflow.com/a/24364736/3901620

答案 1 :(得分:1)

写入更改颜色功能,并在延迟后使用功能执行选择器。

func ChangeColor() {
    BackValue = Int(arc4random_uniform(7))

    backview.image = UIImage (named: BackNames [BackValue])

    self.perform(#selector(ChangeColor), with: nil, afterDelay: 2.0)
}

取消选择器使用

self.classForCoder.cancelPreviousPerformRequests(withTarget: self)

答案 2 :(得分:0)

在objective-c;

[NSTimer scheduledTimerWithTimeInterval:2.0
    target:self
    selector:@selector(timerCalled:)
    userInfo:nil
    repeats:YES];

-(void)timerCalled
{
     [UIView transitionWithView:textFieldimageView
                  duration:0.2f
                   options:UIViewAnimationOptionTransitionCrossDissolve
                animations:^{
                    imageView.image = newImage;
                } completion:nil];
}