Недостаточно памяти при наличии нового UIViewControllerIOS

Программируем под IOS
Ответить
Anonymous
 Недостаточно памяти при наличии нового UIViewController

Сообщение Anonymous »

Структура моего приложения: UINavigationController -> vcA -> vcB -> vcC.
Когда я представляю любой контроллер представления из vcC, использование памяти продолжает увеличиваться до тех пор, пока приложение не выйдет из строя из-за нехватки памяти. Проблемы .
Однако, когда я представляю из vcA или vcB, все работает нормально.
Может ли кто-нибудь помочь объяснить, почему это происходит и как это исправить?
Дополнение:
Эта проблема возникает, когда я использую Вертикальную кнопку. Я смогу представить его нормально, если удалю его из файла .xib. Когда я использую Вертикальную кнопку, приложение вылетает, когда я представляю его из любого места в vcC
[img]https:/ /i.sstatic.net/TMrGHLFJ.png[/img]

Это код Вертикальной кнопки

Код: Выделить всё

class VerticalButton: UIButton {

override init(frame: CGRect) {
super.init(frame: frame)
configureButton()
}

required init?(coder: NSCoder) {
super.init(coder: coder)
configureButton()
}

override func awakeFromNib() {
super.awakeFromNib()
configureButton()
}

override func layoutSubviews() {
super.layoutSubviews()
updateButtonSize()
}

private func configureButton() {
var configuration = UIButton.Configuration.plain()
configuration.imagePlacement = .top
configuration.imagePadding = 8
configuration.contentInsets = NSDirectionalEdgeInsets(top: 10, leading: 10, bottom: 10, trailing: 10)

self.configuration = configuration

self.setContentHuggingPriority(.defaultHigh, for: .horizontal)
self.setContentHuggingPriority(.defaultHigh, for: .vertical)
self.setContentCompressionResistancePriority(.defaultHigh, for: .horizontal)
self.setContentCompressionResistancePriority(.defaultHigh, for: .vertical)
}

func updateButtonSize() {
guard let image = self.imageView?.image, let title = self.titleLabel?.text else { return }

let titleSize = (title as NSString).size(withAttributes: [NSAttributedString.Key.font: self.titleLabel?.font ?? UIFont.systemFont(ofSize: 17)])
let imageSize = image.size

let contentHeight = imageSize.height + titleSize.height + (self.configuration?.imagePadding ?? 0)
let contentWidth = max(imageSize.width, titleSize.width)

let width = contentWidth + (self.configuration?.contentInsets.leading ?? 0) + (self.configuration?.contentInsets.trailing ?? 0)
let height = contentHeight + (self.configuration?.contentInsets.top ?? 0) + (self.configuration?.contentInsets.bottom ?? 0)
self.frame.size = CGSize(width: width, height: height)

self.invalidateIntrinsicContentSize()
}

override func setTitle(_ title: String?, for state: UIControl.State) {
super.setTitle(title, for: state)
updateButtonSize()
}

override func setImage(_ image: UIImage?, for state: UIControl.State) {
super.setImage(image, for: state)
updateButtonSize()
}
}
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/791 ... controller
Ответить

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

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

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

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

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