Swift с изображением в фоновом режиме, не меняющимся с подвидом

У меня есть представление, которое отображает 1 изображение за раз, и это изображение должно быть фоновым изображением. У меня также есть другие элементы поверх этого изображения, которые должны меняться при касании. Представление, которое у меня есть, называется Видеопросмотр, и у меня есть элементы сверху. Все это работает, моя проблема заключается в том, что когда я использую вставитьподвид, все элементы сверху меняются (как и должно быть), но изображение остается прежним (VideoView), и оно должно измениться. Если я заменю InsertSubView на addSubview, то изображение изменится правильно при нажатии, но мои верхние элементы не будут отображаться. Я знаю, что я должен использовать вставитьподвид, и при касании я вижу изменение URL-адреса изображения, но на экране остается первое изображение по умолчанию.

Кажется, я знаю, что может происходить. При каждом нажатии я добавляю новый InsertSubview, и новое изображение может быть за старым изображением. Я проверил, загрузив видео. Сначала у меня было изображение, и когда я нажал, чтобы перейти к следующему экрану, изображение осталось, однако появился звук видео.

class BookViewC: UIViewController{
    @IBOutlet weak var VideoView: UIView!

    var imageView: UIImageView?



override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
  // This is how I change images, touchCount number is linked with unique image depending on the number passed in .

    for touch in touches {
        let location = touch.location(in: self.VideoView)


          if location.x <  self.VideoView.layer.frame.size.width / 2 {
            if touchCount == 0 || touchCount < 0 {
                touchCount = 0
            } else {
                touchCount = touchCount - 1

            }
           reloadTable(Offset: touchCount)
        }
        else {
            touchCount = touchCount + 1
            reloadTable(Offset: touchCount)

        }
    }
}

func ShowImage(s_image: String) {
    let imgURL: NSURL = NSURL(string: s_image)!
    let request:NSURLRequest =  NSURLRequest(url: imgURL as URL)
    let config = URLSessionConfiguration.default
    let session = URLSession(configuration: config)

    bookviewImage.imageView = UIImageView(image: UIImage(named: s_image))
    bookviewImage.imageView?.frame = VideoView.bounds
    bookviewImage.imageView?.contentMode = UIViewContentMode.scaleAspectFill


    let task = session.dataTask(with: request as URLRequest,    completionHandler: {(data, response, error) in
        DispatchQueue.main.async(execute: { () -> Void in

            if data != nil {

                self.bookviewImage.imageView?.image = UIImage(data: data!)
                self.VideoView.insertSubview(self.bookviewImage.imageView!, at: 0)
               // self.VideoView.addSubview(self.bookviewImage.imageView!)

            } else {
                self.bookviewImage.imageView!.image = nil
            }

        })
    });
    task.resume()
}





    func reloadTable(Offset: Int) {

    // send http request

        session.dataTask(with:request, completionHandler: {(data, response, error) in
            if error != nil {

            } else {
                do {

       let parsedData = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as! [String:Any]

   if let Streams = parsedData["Results"] as? [AnyObject]?
       {

     if self.streamsModel.Locations.count >= 0 {
                         // Get Results

                        }


        DispatchQueue.main.async {
          for Stream in Streams! {



if let s_image = Stream["stream_image"] as? String {                                    
self.ShowImage(s_image: s_image)

 }
     }
       }

Swift с изображением в фоновом режиме, не меняющимся с подвидом

Это фоновое изображение в InsertSubview не меняется при нажатии, однако, когда я добавляю AddSubview, фоновое изображение меняется, поэтому я знаю, что в моем коде что-то не так, поскольку фоновое изображение InsertSubview не обновляется.

[![ .][2]][2]

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
513
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я не уверен, как вы меняете изображения, и, возможно, мне придется увидеть код, чтобы дать лучшее объяснение. А пока вы должны понимать разницу между insertSubview и addSubview.

добавить подвид:

addSubview добавляет представление в конец списка. В иерархической структуре это будет самый нижний элемент. Однако на экране это будет самый верхний элемент, закрывающий все, что находится под ним. Иерархия будет выглядеть

  • Вид
    • Просмотр видео
      • Изображение профиля
      • Время
      • Полное имя
      • Сообщение
      • Кнопка
      • изображениеПросмотреть

вставить подвид:

insertSubview вставляет представление в заданную позицию в списке. Ваш код вставляется в позицию 0. В иерархической структуре это будет самый верхний элемент. Однако на экране это будет самый нижний элемент, закрытый всем, что находится сверху. Иерархия будет выглядеть

  • Вид
    • Просмотр видео
      • изображениеПросмотреть
      • Изображение профиля
      • Время
      • Полное имя
      • Сообщение
      • Кнопка

Надеюсь, это поможет.

Спасибо, это определенно помогает, поэтому, когда я поставил InsertSubview на 1, он скрыл изображение профиля. Я новичок в Swift.

user1591668 28.05.2019 06:13

@ user1591668 Рад быть полезным. Пожалуйста, примите ответ, если проблема решена. Если останется какая-то путаница, дайте мне знать

Malik 29.05.2019 02:32

Я определенно ближе к решению моей проблемы. Я создал более подробный пост. По сути, мое изображение InsertSubview должно меняться по клику, а этого не происходит, хотя все остальное меняется по клику.

user1591668 29.05.2019 04:58

Это сработало. Я просто создал образ в ViewDidLoad, а затем вызвал InsertSubview вместо того, чтобы каждый раз создавать новый образ.

user1591668 30.05.2019 00:20

Другие вопросы по теме