swift - 使用 struct 显示图像一段时间
问题描述
我希望下面的快速代码获取结构数据并在 for 循环之类的东西中使用。循环应该采用 arrayOne 并在图像应该在 imageview pic 上显示多长时间的时间内使用它。Uiimage 数组应该对应于 int.So 有 2 个图像和两个 int 只是使它们显示在 imageview pic 上以匹配它们各自数组中的 int。
import UIKit
class ViewController: UIViewController {
var pic = UIImageView()
var somePics:[UIImage] = [ UIImage(named: "a.png")!,UIImage(named: "b.png")!]
var emptyb = [UIImage]()
var someInts:[Int] = [10, 20]
override func viewDidLoad() {
super.viewDidLoad()
Added(arrayOne: someInts, arrayTwo: emptyb)
view.addSubview(pic)
pic.frame = CGRect(x: 100, y: 100, width: 200, height: 200)
pic.backgroundColor = .yellow
//for added.
}
}
struct Added {
var arrayOne: [Int]
var arrayTwo: [UIImage]
}
解决方案
完全工作的例子。检查你是否一切都好!
class ViewController: UIViewController {
var pic = UIImageView()
var somePics: [UIImage] = [UIImage(named: "image1")!, UIImage(named: "image2")!]
var emptyb = [UIImage]()
var someInts:[Int] = [5, 6]
var currentIndex = 0
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.white
view.addSubview(pic)
pic.frame = CGRect(x: 100, y: 100, width: 200, height: 200)
pic.backgroundColor = .yellow
runGallery()
}
func runGallery() {
guard !somePics.isEmpty else {
return
}
currentIndex = 0
newTimerForIndex(index: 0)
}
func newTimerForIndex(index: Int) {
let image = somePics[index]
pic.image = image
Timer.scheduledTimer(withTimeInterval: Double(someInts[index]), repeats: false) { timer in
if self.currentIndex + 1 < self.somePics.count {
//RUN gallery for next image
self.currentIndex += 1
self.newTimerForIndex(index: self.currentIndex)
} else {
//STOP on last element
self.pic.image = nil
}
}
}
}
struct Added {
var arrayOne: [Int]
var arrayTwo: [UIImage]
}
推荐阅读
- javascript - 跨阴影 DOM 边界的 CSS 选择器
- firefox - 如何使pdf在查看器中打开而不是在mozila中下载
- python - 来自 URL 的图像不会显示在 tkinter 窗口上
- python - 有没有办法暂停脚本,直到 ffmpeg 完成文件转换?
- compiler-errors - Quartus II VHDL 代码问题——我该怎么办?
- vba - 使用 VBA 删除 MS Word 中的特定 ActiveX 对象而不影响其他按钮
- php - PHP:如何从基类调用子方法?
- android - Firebase 动态链接不适用于 Unicode 字符
- node.js - OAuth2:在 Node 中制作的资源服务器中处理来自 Spring Boot 中制作的身份验证服务器的 access_token
- android - adb shell am get-standby-bucket 总是返回 5