me
me copied to clipboard
学习MacOS App (Part 2: Image Play)
意图: 创建一个程序每5秒从unsplash上更新一张图片。
创建一个Storyboard Swift的App,然后在XIB上放上一个ImageView, 正确设置AutoResizing,确保图片全尺寸,然后将outlets拖入ViewController.swift。
import Cocoa
class ViewController: NSViewController {
@IBOutlet weak var imageView: NSImageView!
var timer: Timer?
override func viewDidLoad() {
super.viewDidLoad()
self.imageView.image = NSImage(named:"sample")
}
override func viewWillAppear() {
print("view will appear")
timer = Timer.scheduledTimer(withTimeInterval: 5.0, repeats: true) { timer in
// https://source.unsplash.com/random
// Create URL
let url = URL(string: "https://source.unsplash.com/random")!
// Fetch Image Data
if let data = try? Data(contentsOf: url) {
// Create Image and Update Image View
self.imageView.image = NSImage(data: data)
}
}
}
override func viewDidDisappear() {
print("view did disappear")
timer?.invalidate()
timer = nil
}
}
注:
- App内部图片从电脑上拖入Assets.xcassets中即可在ViewController中使用
- ViewDidLoad可以理解为init,但是缺少对应的uninit,可以理解为不需要手动释放,所以对应的应该采用appear和disappear,这个有待后续进一步补充
下一步计划:
- 增加图片过渡效果,比如淡入淡出等。