我试图通过Swift中的代码将表视图单元格中的UIImage View变成一个完美的圆。首先,我在代码中放入img.layer.cornerRadius = 35
,它使我的图像几乎像一个圆圈。然后,我没有向拐角半径传递一个数字,而是试图通过代码来编写这部分,比如img.layer.cornerRadius = img.frame.height / 2
。然而,这段代码使UIImage变成了正方形(不应用圆角半径)。我不知道为什么会发生这种情况。有人能解释一下为什么会发生这种情况以及如何解决吗?
class RepositoryCell: UITableViewCell {
let userImageView: UIImageView = {
let img = UIImageView()
img.contentMode = .scaleAspectFit
img.layer.cornerRadius = img.frame.height / 2
// img.layer.cornerRadius = 35 <= this code works
img.clipsToBounds = true
img.backgroundColor = .black
return img
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
addSubview(userImageView)
containerView.addSubview(userNameLabel)
containerView.addSubview(repositoryNameLabel)
addSubview(containerView)
addSubview(starNumLabel)
configureViewComponents()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func configureViewComponents() {
setUserImageConstraints()
}
func setUserImageConstraints() {
userImageView.translatesAutoresizingMaskIntoConstraints = false
userImageView.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true
userImageView.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 10).isActive = true
userImageView.heightAnchor.constraint(equalToConstant: 80).isActive = true
userImageView.widthAnchor.constraint(equalTo: userImageView.heightAnchor, multiplier: 1).isActive = true
}
2条答案
按热度按时间bwitn5fc1#
因为
let img = UIImageView()
-〉frame == zero
你可以这样做:
bnl4lu3b2#
如果使用RxSwift,可以简单地调用
img.cornerHalf()
,它使用关键路径观察
使用下面的辅助代码