gpt4 book ai didi

swift - 为什么将 UIView 重用为两个 UITextField 的 .leftView 会导致大量内存使用

转载 作者:行者123 更新时间:2023-11-30 11:08:39 27 4
gpt4 key购买 nike

为了在 Swift 4.2 中的 UITextField 中创建填充效果,我使用了以下技术:

import UIKit


class BioController: UIViewController {


@IBOutlet weak var nameTextField: UITextField!
@IBOutlet weak var ageTextField: UITextField!

override func viewDidLoad() {
super.viewDidLoad()

let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: 27, height: self.nameTextField.frame.height))
self.nameTextField.leftView = paddingView
self.nameTextField.leftViewMode = .always
}
}

这种方法按预期工作并且非常好。

enter image description here

为了重用 paddingView 并在第二个文本字段上获得相同的效果,我已将代码更改为:

import UIKit


class BioController: UIViewController {


@IBOutlet weak var nameTextField: UITextField!
@IBOutlet weak var ageTextField: UITextField!

override func viewDidLoad() {
super.viewDidLoad()

let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: 27, height: self.nameTextField.frame.height))
self.nameTextField.leftView = paddingView
self.nameTextField.leftViewMode = .always

self.ageTextField.leftView = paddingView
self.ageTextField.leftViewMode = .always
}
}

我注意到的第一件事是 Controller 不再出现在 self.present( (前 Controller 的)上。在调查这个问题时,我注意到:

enter image description here

内存快速而猛烈地爆炸!删除 self.ageTextField.leftView = paddingView 并创建自己的 View 解决了该问题。但为什么会发生这种情况呢?如有任何帮助,我们将不胜感激。

最佳答案

我不知道为什么这会导致您显示出极端的内存使用情况,但我可以告诉您不要这样做。 UIView 只能位于 View 层次结构中的一个位置。您不能将 UIView 放置在两个不同的位置,并且不应该这样做。

“医生,当我这样做时会很痛!”

医生:“那就别这么做!”

关于swift - 为什么将 UIView 重用为两个 UITextField 的 .leftView 会导致大量内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52434707/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com