Увеличение использования памяти в iOS с помощью UISlider для обновления изображения UIImageView.IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Увеличение использования памяти в iOS с помощью UISlider для обновления изображения UIImageView.

Сообщение Anonymous »


Я новичок в разработке Swift и iOS и столкнулся с проблемой при создании приложения. В ViewController у меня есть ScrollView с вложенным внутри UIView с двумя дочерними элементами UIImageView, расположенными один поверх другого. Я использую фоновое изображение для отображения изображения в формате jpg, содержащего фэнтезийную карту, в то время как верхнее изображение предназначено для отображения изображения в формате png (с прозрачным фоном) с нарисованными в нем путями, которые представляют путешествие некоторых персонажей. Внутри ViewController находится вертикальный StackView с меткой и UISlider. С помощью этого ползунка пользователь может выбрать дату, и верхнее изображение должно быть обновлено правильным изображением, представляющим путь символов до указанной даты.

Ниже приведен класс ViewController

`импортировать UIKit класс MapViewController: UIViewController { @IBOutlet слабая переменная прокрутки: UIScrollView! @IBOutlet слабая переменная imagesView: UIView! @IBOutlet слабая переменная backgroundImageView: UIImageView! @IBOutlet слабая переменная переднего планаImageView: UIImageView! @IBOutlet слабая переменная MenuStackView: UIStackView! @IBOutlet слабая переменная colorSwitch: UISwitch! @IBOutlet слабая переменная dateLabel: UILabel! @IBOutlet слабая переменная dateSlider: UISlider! пусть mapPins = MapPins() переопределить функцию viewDidLoad() { супер.viewDidLoad() MenuStackView.layer.cornerRadius = 11,0 MenuStackView.layer.masksToBounds = true dateSlider.maximumValue = Float(mapPins.pinsLabelTexts.count) ScrollView.delegate = сам updateBackgroundMap (isColored: true) } func updateBackgroundMap (isColored: Bool) { вар backImage: UIImage? = ноль если isColored { backImage = UIImage(с именем: "Mappa Antico Mondo - colori.jpg") } еще { backImage = UIImage(с именем: "Mappa Antico Mondo - bn.jpg") } backgroundImageView.image = backImage backgroundImageView.contentMode = .scaleAspectFit backgroundImageView.frame.size = backImage!.size } func updateTopImage(imageName: String?) { если имя_изображения == ноль { передний планImageView.image = ноль } еще { пусть изображение = UIImage (по имени: imageName!) передний планImageView.image = изображение } } функция updateCharactersPins() { индекс вар = Int(dateSlider.value) если индекс > mapPins.pinsLabelTexts.count-1 { index = mapPins.pinsLabelTexts.count-1 } dateLabel.text = mapPins.pinsLabelTexts[index-1] updateTopImage(imageName: mapPins.getPinsImageName(для: index-1)) } @IBAction func toggleColors(_ sender: UISwitch) { updateBackgroundMap (isColored: sender.isOn) } @IBAction func dateSliderChanged (_ отправитель: UISlider) { updateCharactersPins() } } расширение MapViewController: UIScrollViewDelegate { func viewForZooming (в ScrollView: UIScrollView) -> UIView? { вернуть изображенияПросмотреть } }` Существует 104 возможных «mapPin» (изображения png для верхнего изображения), и когда я тестирую код, все работает «отлично», но в отладчике я вижу, что использование памяти увеличивается каждый раз, когда я меняю ползунок и в конце концов приложение вылетело, потому что оно использует слишком много памяти. То же самое не произойдет, если я использую приложение в симуляторе Xcode. Более того, я попытался удалить ползунок и вызвать функцию updateCharactersPins() 104 раза в методе viewDidLoad(), чтобы воссоздать вызовы функции столько раз, сколько делает ползунок (если пользователь просто увеличивает его), и обнаружил, что использование памяти остается в порядке. Похоже, что существует проблема (вероятно, в моем коде) с @IBAction моего слайдера, обрабатывающего вызовы функций. Может ли быть так, что каждый объект UIImage остается в памяти?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как прочитать размер изображения большого пальца UISlider
    Anonymous » » в форуме IOS
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Как изменить ContentMode UIImageView с помощью анимации с помощью Swift?
    Anonymous » » в форуме IOS
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Как изменить ContentMode UIImageView с помощью анимации с помощью Swift?
    Anonymous » » в форуме IOS
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Увеличение использования памяти после обновления до Spring boot 3.
    Anonymous » » в форуме JAVA
    0 Ответы
    32 Просмотры
    Последнее сообщение Anonymous
  • Увеличение использования памяти после обновления до Spring boot 3 [закрыто]
    Anonymous » » в форуме JAVA
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»