Это огромная проблема для меня, так как это мое первое приложение без учебника, но вот что я пытаюсь сделать:
Я создал приложение под названием Paranormal Radar с генератором случайных слов и GIF, который я сделал из экрана радара, который вращается вокруг и вокруг. Следующий шаг, который я хочу сделать, это добавить всплывающие подсказки, которые отображаются на экране радара.
Этот всплеск, видимый на изображении, является файлом png. У меня нет никакого кода для этого пока это просто stati c. Вот мои два варианта, насколько я могу судить:
Простой вариант: укажите способ отображения png случайным образом в любом месте экрана радара, задержитесь на несколько секунд, исчезните, а другой покажите несколько где еще.
Жесткая опция: создайте невидимую линию поверх GIF, которая каким-то образом следует за линией радара и добавляет блики прямо за линией - эта опция, вероятно, слишком сложна для меня на этапе, на котором я нахожусь .
На той стадии, на которой я сейчас нахожусь, я был бы рад найти способ сделать легкий вариант, так как это мое первое приложение! Потратил несколько часов, пытаясь сделать это, и попытался сделать его спрайтом, но не повезло. Буду признателен за любой совет !!
Вот мой код.
//
// ViewController.swift
// Paranormal Radar
// This is a first app I made without following a straight forward tutorial.
// This app is a novelty Apparition Communication Tool.
// Created by Mateusz on 2020-01-08.
// Copyright © 2020 Mateusz. All rights reserved.
//
import UIKit
import AVFoundation
class ViewController: UIViewController {
//RADAR
@IBOutlet var gifView: UIImageView!
@IBOutlet weak var label: UILabel!
var paraTimer: Timer?
var paraTimer2: Timer?
var paraTimer3: Timer?
var paraTimer4: Timer?
//Created the variables I named paraTimers.
//Created the functions to START the three timers. Delays are not yet coded in.
func restartTimer() {
let randomNum = Int.random(in: 1..<10)
paraTimer = Timer.scheduledTimer(withTimeInterval: TimeInterval(randomNum), repeats: false) { [weak self] _ in
let array = ["Action", "Array", "Atticus", "Amber", "Adding", "Assembly", "Amityville"]
self?.label.text = array.randomElement()
self?.restartTimer()
}
}
func restartTimer2() {
let randomNum2 = Int.random(in: 1..<10)
paraTimer2 = Timer.scheduledTimer(withTimeInterval: TimeInterval(randomNum2), repeats: false) { [weak self] _ in
let array = ["Bob", "Bring", "Backyard", "Battle", "Boy", "Black", "Backstabber"]
self?.label.text = array.randomElement()
self?.restartTimer2()
}
}
func restartTimer3() {
let randomNum3 = Int.random(in: 1..<10)
paraTimer3 = Timer.scheduledTimer(withTimeInterval: TimeInterval(randomNum3), repeats: false) { [weak self] _ in
let array = ["Cornfield", "Crazy", "Criminal", "Coal", "Catacomb", "Corinthian", "Calibration"]
self?.label.text = array.randomElement()
self?.restartTimer3()
}
}
func restartTimer4() {
let randomNum4 = Int.random(in: 1..<10)
paraTimer4 = Timer.scheduledTimer(withTimeInterval: TimeInterval(randomNum4), repeats: false) { [weak self] _ in
let array = ["Dammed", "Dark", "Doreen", "Did", "Die", "Death", "Deceased", "Dim", "Dangerous", "Daniel"]
self?.label.text = array.randomElement()
self?.restartTimer4()
}
}
// Do any additional setup after loading the view.
//override func viewWillAppear - learn more on these please!
//this is the initial time the timer is being started in the UI.
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
//RADAR
gifView.loadGif(name: "radar")
restartTimer()
DispatchQueue.main.asyncAfter(deadline: .now() + 30) {
self.restartTimer2()
//30 seconds in, the FIRST timer is killed.
self.paraTimer?.invalidate()
self.paraTimer = nil
}
DispatchQueue.main.asyncAfter(deadline: .now() + 60) {
self.restartTimer3()
//60 seconds in, the SECOND timer is killed.
self.paraTimer2?.invalidate()
self.paraTimer2 = nil
}
DispatchQueue.main.asyncAfter(deadline: .now() + 120) {
self.restartTimer4()
//120 seconds in, the THIRD timer is killed.
self.paraTimer3?.invalidate()
self.paraTimer3 = nil
}
}
//this takes the timers away.
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
paraTimer?.invalidate()
paraTimer = nil
DispatchQueue.main.asyncAfter(deadline: .now() + 30) {
self.paraTimer2?.invalidate()
self.paraTimer2 = nil
}
DispatchQueue.main.asyncAfter(deadline: .now() + 60) {
self.paraTimer3?.invalidate()
self.paraTimer3 = nil
}
DispatchQueue.main.asyncAfter(deadline: .now() + 120) {
self.paraTimer4?.invalidate()
self.paraTimer4 = nil
}
}
}