ios - 当我以编程方式使用锚点时,为什么 ImageView 的位置错误?
问题描述
每个人。我使用锚以编程方式构建的集合视图单元存在问题。
细胞
private lazy var iconView: UIImageView = {
let image = UIImageView()
image.translatesAutoresizingMaskIntoConstraints = false
image.clipsToBounds = true
return image
}()
private lazy var label: UILabel = {
let label = UILabel()
label.numberOfLines = 2
label.font = NeoSansPro.regular.of(size: 12)
label.textAlignment = .center
label.translatesAutoresizingMaskIntoConstraints = false
label.sizeToFit()
return label
}()
配置锚点
override func layoutSubviews() {
super.layoutSubviews()
setupUI()
}
func setupUI() {
NSLayoutConstraint.activate( [
iconView.heightAnchor.constraint(equalToConstant: 32),
iconView.widthAnchor.constraint(equalToConstant: 32),
iconView.centerXAnchor.constraint(equalTo: centerXAnchor, constant: 0),
iconView.centerYAnchor.constraint(equalTo: centerYAnchor, constant: -16),
label.topAnchor.constraint(equalTo: iconView.bottomAnchor, constant: 8),
label.bottomAnchor.constraint(equalTo: bottomAnchor, constant: 4),
label.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 4),
label.trailingAnchor.constraint(equalTo: trailingAnchor, constant: 4),
])
}
解决方案
首先添加视图,然后添加约束它将起作用。
private lazy var iconView: UIImageView = {
let image = UIImageView()
image.translatesAutoresizingMaskIntoConstraints = false
image.image = UIImage(named: "1")
return image
}()
override func awakeFromNib() {
super.awakeFromNib()
backView.layer.cornerRadius = 5
self.contentView.addSubview(iconView)
setUpView()
}
func setUpView() {
NSLayoutConstraint.activate( [
iconView.heightAnchor.constraint(equalToConstant: 40),
iconView.widthAnchor.constraint(equalToConstant: 40),
iconView.centerXAnchor.constraint(equalTo: self.contentView.centerXAnchor, constant: 0),
iconView.centerYAnchor.constraint(equalTo: self.contentView.centerYAnchor, constant: -16)
])
}
推荐阅读
- esp8266 - ESP8266 AccessPoint 在正确通信 5 次后总是失败
- python - 如何使用 jinja2 显示嵌套字典?
- java - ItemCollection 上的 DynamoDB getAccumulatedConsumedCapacity 始终返回 NULL
- c++ - NEON 内在 vs C++
- node.js - 无法使用 NGINX 和 Digital Ocean 服务静态文件
- c++ - 什么时候应该在 C++ 中使用指针?
- docker - 为 docker Hub 中的每个稳定版本更新 AWS ECR
- pycurl - 使用 python pycurl 上传作业的 Rundeck API 无法上传文件
- python - 如何在不和谐的机器人中安排任务
- mysql - 如何在 AWS RDS 上更改 group_concat_max_len