Swift 未在视图中取整的图像
我正在尝试将几个图像四舍五入,并将它们添加到堆栈视图中,但由于某些原因,它不起作用。基本上,我有一个包含所有Swift 未在视图中取整的图像,swift,uiimageview,uiimage,uistackview,Swift,Uiimageview,Uiimage,Uistackview,我正在尝试将几个图像四舍五入,并将它们添加到堆栈视图中,但由于某些原因,它不起作用。基本上,我有一个包含所有UIImage名称的数组,并将它们分配给UIImageView。当我试图在图像上画一个圆圈时,它不起作用: var navStackView : UIStackView = { let stack = UIStackView() stack.axis = .horizontal stack.alignment = .center stack.distrib
UIImage
名称的数组,并将它们分配给UIImageView
。当我试图在图像上画一个圆圈时,它不起作用:
var navStackView : UIStackView = {
let stack = UIStackView()
stack.axis = .horizontal
stack.alignment = .center
stack.distribution = .fillEqually
// stack.spacing = -10
stack.translatesAutoresizingMaskIntoConstraints = false
return stack
}()
var images = ["1", "2", "3", "4"]
override func viewDidLoad() {
super.viewDidLoad()
let navController = navigationController!
navController.navigationBar.addSubview(navStackView)
// x, y, w, h
navStackView.leadingAnchor.constraint(equalTo: navController.navigationBar.leadingAnchor).isActive = true
navStackView.trailingAnchor.constraint(equalTo: navController.navigationBar.trailingAnchor).isActive = true
navStackView.topAnchor.constraint(equalTo: navController.navigationBar.topAnchor).isActive = true
navStackView.bottomAnchor.constraint(equalTo: navController.navigationBar.bottomAnchor).isActive = true
for image in images {
let imageView = UIImageView()
imageView.image = UIImage(named: image)
imageView.layer.cornerRadius = imageView.frame.height / 2
imageView.clipsToBounds = true
imageView.layer.masksToBounds = false
imageView.contentMode = .scaleAspectFit
// imageView.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
navStackView.addArrangedSubview(imageView)
navStackView.layoutIfNeeded()
}
navigationItem.titleView = navStackView
}
你可以试试
var once = true
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
if once {
navStackView.subviews.forEach { $0.layer.cornerRadius = $0.frame.height / 2 }
once = false
}
}
这不是每次布置子视图时都会被称为吗?如果需要在视图控制器中执行其他视图操作,这不是效率低下吗?是的,我总是建议在viewDidLayoutSubviews中使用once var,如果他必须使用它,这对我来说似乎是一种糟糕的方法。@RakeshaShastri这种方法众所周知,我并没有创建它,加上你的代码在每次循环运行时都会强制布局stackview,所以你认为这也很好吗???