iOS:使用 anchor 以编程方式将 UIImageView 与底部对齐

标签 ios swift uiimageview uikit constraints

我正在尝试以编程方式创建一个UIImageView(因此没有 Storyboard/UI编辑器),并使用 anchor 约束对齐它。 UIImageView 应与底部对齐并缩放以适合底部区域(如全宽页脚),但保持宽高比,有点像 Storyboard编辑器中可用的内容?

enter image description here

我当前在 viewDidLoad() 中的代码看起来像这样,但无论我做什么,图像都显示在顶部,并且似乎 ImageView (而不是图像)填充了整个高度父 View 。

// Create and add image view
let imgView = UIImageView(image : UIImage(named : "Images/main_bottom.png"))
imgView.translatesAutoresizingMaskIntoConstraints = false
imgView.contentMode = .scaleAspectFit

view.addSubview(imgView)


// Align image view
let margins = view.safeAreaLayoutGuide

NSLayoutConstraint.activate([
    imgView.leadingAnchor.constraint(equalTo: margins.leadingAnchor),
    imgView.trailingAnchor.constraint(equalTo: margins.trailingAnchor),
    imgView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
])

最佳答案

通过根据图像比例计算和设置高度 anchor ,我能够使用上面的评论和进一步的实验找到解决方案。

// Compute image ratio
let ratio = imgView.intrinsicContentSize.height / imgView.intrinsicContentSize.width

// Set height anchor as a computed value of the (auto-scaled) width, and the image ratio
NSLayoutConstraint.activate([
   // ...other contraints go here still...
   imgView.heightAnchor.constraint(equalTo: imgView.widthAnchor, multiplier: ratio)
])

关于iOS:使用 anchor 以编程方式将 UIImageView 与底部对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59987268/

相关文章:

ios - Swift 1.2 数组声明,额外的括号?

ios - 在 xib 中设置用于单击和双击的 UIGestureRecognizers

objective-c - 创建 UIImageView

ios - 使用 AFNetworking 的带闭包的 Swift 完成 block

ios - GIDSignInDelegate 方法 stub 给出错误

ios - 在 "Settings App"中打开辅助功能 -> 缩放时,三指 UIPanGestureRecognizer 不起作用

swift - for in 循环与 Swift 中的 where 子句

ios - 如何获得 2x 图像作为屏幕截图?

ios - 在 iOS 中使用 Storyboard而不是 .xib 文件进行 Facebook 连接

Ios DBAccess 查询调试