每天都有新形象

时间:2018-10-09 00:45:58

标签: ios swift xcode

我想每天在我的应用中查看新图片。我正在尝试使用下面的代码,但是它不起作用。我在哪里错了?

我还希望该用户仅在每天打开我的应用程序(第一天-image1,第二天-image2,第三天-image3等)时才能看到新图像。但是,例如,如果他没有在第3天营业,而是在第4天营业,那么他将从image1开始。

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var imageName: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }


    func getImageForToday() -> UIImage {
        let arrImages = ["image1.jpg", "image2.jpg", "image3.jpg", "image4.jpg", "image5.jpg"]

        let imageName = arrImages[getLastCharacterFromTodayDate()]
        return UIImage(named: imageName)!
    }


    func getLastCharacterFromTodayDate() -> Int {
        let calendar = NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian)!
        let component = calendar.components(NSCalendar.Unit.calendar, from: NSDate() as Date)
        return component.day! % 10
    }

}

3 个答案:

答案 0 :(得分:0)

我不清楚您为什么要使用

return component.day! % 10

来自

  

getLastCharacterFromTodayDate()

因此,我将从该函数返回当日的整数作为

func getLastCharacterFromTodayDate() -> Int {
    let calendar = Calendar.autoupdatingCurrent
    return calendar.component(.weekday, from: Date() )
}

然后对

进行较小的更改
  

getImageForToday

func getImageForToday() -> UIImage {
    let arrImages = ["image1.jpg", "image2.jpg", "image3.jpg", "image4.jpg", "image5.jpg"]
    let imageName = arrImages[getLastCharacterFromTodayDate() % arrImages.count]
    return UIImage(named: imageName)!
}

答案 1 :(得分:0)

您的代码let component = calendar.components(NSCalendar.Unit.calendar, from: NSDate() as Date)的第一个参数可能应更改为.day
然后在以下两个位置进行一个小的更改:
1.

func getLastCharacterFromTodayDate() -> Int {
    let calendar = NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian)!
    let component = calendar.components(.day, from: Date())
    return component.day!
}

2。

let imageName = arrImages[getLastCharacterFromTodayDate() % arrImages.count]

答案 2 :(得分:0)

我认为最好节省时间,并让用户根据用户偏好打开应用。 如果日期更改超过24小时...您可以将其设置回第一张图像。 如果日期更改少于24小时,则可以设置下一张图片。

谢谢