Когда я представляю любой контроллер представления из 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
Мобильная версия