我有UITableView,其中是每个单元格上具有相同视图(仅限不同内容)的UIStackView。(tableView&#39s的单元格如下所示)
视图由上面的UIImageView和UILabel组成。由于保持比率,UIImageView的内容设置为.scaleAspectFit。我有一个问题,为imageView添加一个新的图像层(子视图),它必须与当前图像完美重叠,但我无法通过autolayout正确地适应图像,因为我只知道UIImageView的锚点,而不是图像的锚(它不存在)。
PS:我曾尝试使用imageview.image.size.width
来设置宽度和高度,但它也没用。
使用autolayout添加子视图的当前代码:
func addStripe(){
let stripeLayer = UIImageView(image: #imageLiteral(resourceName: "book_new"))
imageView.addSubview(stripeLayer)
stripeLayer.contentMode = .scaleToFill
stripeLayer.translatesAutoresizingMaskIntoConstraints = false
stripeLayer.topAnchor.constraint(equalTo: imageView.topAnchor).isActive = true
stripeLayer.leadingAnchor.constraint(equalTo: imageView.centerXAnchor).isActive = true
stripeLayer.trailingAnchor.constraint(equalTo: imageView.trailingAnchor).isActive = true
Aaaand有addStripe
函数(错误的函数)的结果
感谢大家的时间!
答案 0 :(得分:1)
我认为您应该将stripeLayer
的框架设置为等于imageView
。您可以使用UIImageView
的init方法执行此操作:
let stripeLayer = UIImageView(frame: imageView.frame)
stripeLayer.image = #imageLiteral(resourceName: "book_new")
imageView.addSubview(stripeLayer.image)
我希望它可以帮到你
答案 1 :(得分:0)
@ ReinhardManner的评论对我有帮助而且有效。这一行解决了我的问题
let sizeInView = AVMakeRect(aspectRatio: imgViewFake.image.size, insideRect: imgViewFake.bounds).size