Я не могу установить фоновую картинку (Swift) - PullRequest
1 голос
/ 06 марта 2020

Я сделал простое приложение для таймера и хочу добавить фоновое изображение или видео в фоновом режиме. Однако я не могу этого сделать и не знаю почему.

Может кто-нибудь подсказать, почему картинка не отображается на заднем плане? Я устанавливаю фон в методе viewDidLoad. Может быть, часть @IBOutlet var backgroundView: UIView! не так? Я связал его с указанным UIView, когда сделал этот проект Xcode.

class ViewController: UIViewController, UITableViewDelegate {
    let mainStopwatch = Stopwatch()
    let lapStopwatch = Stopwatch()
    var isPlay: Bool = false

    var laps: [String] = []
    //UI components

    @IBOutlet weak var lapRestButton: UIButton!
    @IBOutlet weak var playPauseButton: UIButton!
    @IBOutlet weak var lapTimerLabel: UILabel!
    @IBOutlet weak var timerLabel: UILabel!
    @IBOutlet weak var lapsTableView: UITableView!
    @IBOutlet var backgroundView: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.view.addBackground(name:  "nathan-dumlao-iXXyrEwZgiU-unsplash")

        lapRestButton.isEnabled = false

        lapsTableView.dataSource = self
        lapsTableView.delegate = self
    }

    //UI Settings
    override var shouldAutorotate: Bool {
        return false
    }

    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return UIInterfaceOrientationMask.portrait
    }

    //Actions
    @IBAction func playPauseTimer(_ sender: Any) {
        lapRestButton.isEnabled = true
        changeButton(lapRestButton, title: "Lap", color: .black)
    }
}

И это еще один быстрый файл для установки фонового изображения.

extension UIView {

func addBackground(name: String) {
    let width = UIScreen.main.bounds.size.width
    let height = UIScreen.main.bounds.size.height

    let imageViewBackground = UIImageView(frame: CGRect(x: 0, y: 0, width: width, height: height))
    imageViewBackground.image = UIImage(named: name)

    imageViewBackground.contentMode = .scaleAspectFill

    self.addSubview(imageViewBackground)
    self.sendSubviewToBack(imageViewBackground)
}

Ответы [ 2 ]

0 голосов
/ 06 марта 2020

Похоже, вы не используете backgroundView где-либо в коде класса, поэтому сначала

Удалите backgroundView из storyBoard, а также удалите код из файла класса

  • viewDidLoad ()
    override func viewDidLoad() {
        super.viewDidLoad()

        self.addBackground(name:  "nathan-dumlao-iXXyrEwZgiU-unsplash") //Update this line

        lapRestButton.isEnabled = false

        lapsTableView.dataSource = self
        lapsTableView.delegate = self
    }


  • Обновите расширение код ниже одного
extension YourViewController {

   func addBackground(name: String) {
       let width = self.view.frame.size.width
       let height = self.view.frame.size.height

       let imageViewBackground = UIImageView(frame: CGRect(x: 0, y: 0, width: width, height: height))
       imageViewBackground.image = UIImage(named: name)

       imageViewBackground.contentMode = .scaleAspectFill

       self.view.addSubview(imageViewBackground)
//     self.sendSubviewToBack(imageViewBackground) //Comment this line
   }
}

0 голосов
/ 06 марта 2020
var timer = Timer()
var counter = 0   // the counter is use for the index of array in below code
var imageArr = ["image","image1","image2"] //Image arr 

override func viewDidLoad() {
    super.viewDidLoad()

    self.addBackground(name: "image") // set default image on your view

    timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(timerAction), userInfo: nil, repeats: true) // timer will start and it will change view background image after one min you can change time according to your requirement.
}

 // called every time interval from the timer
  @objc func timerAction() {
    self.addBackground(name: self.imageArr[counter]) // here we are change our view background image when timer function is run on every min
    counter += 1 // every-time counter will increment by one so the image array index will also increment and we will get our new image
   }

  // that's your code only you need to change one line that last one
   func addBackground(name: String) {
    let width = UIScreen.main.bounds.size.width
    let height = UIScreen.main.bounds.size.height

    let imageViewBackground = UIImageView(frame: CGRect(x: 0, y: 0, width: width, height: height))
    imageViewBackground.image = UIImage(named: name)

    imageViewBackground.contentMode = .scaleAspectFit

    self.viewref.addSubview(imageViewBackground) // here we will set the image view to our view 
}

надеюсь, это поможет вам изменить фон вашего зрения. Благодаря.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...