我想使用根据其内容自动调整大小的视图来自定义UITextField
的{{1}}:
leftView
其中func set(leftImage image: UIImage) {
let imageView = UIImageView(image: image)
let paddingContainer = UIView()
// This is the crucial point:
paddingContainer.translatesAutoresizingMaskIntoConstraints = false
paddingContainer.addSubview(imageView)
imageView.pin(toMarginsOf: paddingContainer)
leftView = paddingContainer
leftViewMode = .always
}
方法仅将四个侧面的图像视图固定在pin
的空白处:
paddingContainer
在iOS 12上,一切正常,但在<12版的iOS版本上,图像完全放错了位置。它甚至不在文本字段的范围内,而是在我的视图控制器视图的左上角。
对我来说,似乎旧版本的iOS不支持在您设置为文本字段的func pin(toMarginsOf view: UIView) {
translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
topAnchor.constraint(equalTo: view.layoutMarginsGuide.topAnchor),
.bottomAnchor.constraint(equalTo: view.layoutMarginsGuide.bottomAnchor),
leadingAnchor.constraint(equalTo: view.layoutMarginsGuide.leadingAnchor),
trailingAnchor.constraint(equalTo: view.layoutMarginsGuide.bottomAnchor)
])
}
的视图内使用自动布局。该文档指出:
左侧叠加层视图放置在接收者的
leftView
方法返回的矩形中。
但它没有说明如何放置在那里:通过使用约束或直接设置框架。
leftViewRect(forBounds:)
是否完全支持使用自动版式?是否有可靠的消息来源或有根据的猜测?
答案 0 :(得分:0)
function showInputValue() {
const inputValue = document.getElementById("numberInput").value;
const inputValueAsNumber = document.getElementById("numberInput").valueAsNumber;
console.log(`value is: "${inputValue}"\nvalueAsNumber is: "${inputValueAsNumber}"`);
}
document.getElementById("btn").addEventListener("click", showInputValue)
希望这会有所帮助
答案 1 :(得分:0)
您可以像这样在布局子视图功能上设置其框架
override func layoutSubviews() {
super.layoutSubviews()
if let lv = self.leftView {
lv.frame = CGRect(x: 0, y: 0, width: self.bounds.height, height: self.bounds.height)
}
}