ios - NSLayoutConstraint问题

标签 ios swift autolayout nslayoutconstraint

//MARK: NSLayoutConstraints
//trailing
let trailingConstaint = NSLayoutConstraint(item: imageView, attribute: .trailing, relatedBy: .equal, toItem:imageView.superview , attribute: .trailing, multiplier: 1, constant: 0)
trailingConstaint.isActive = true

//leading
let leadingConstraint = NSLayoutConstraint(item: imageView, attribute: .leading, relatedBy: .equal, toItem: imageView.superview, attribute: .leading, multiplier: 1, constant: 0)
leadingConstraint.isActive = true

//top
let topConstraint = NSLayoutConstraint(item: image, attribute: .top, relatedBy: .equal, toItem: imageView.superview, attribute: .top, multiplier: 1, constant: 0)
topConstraint.isActive = true

//bottom
let bottomConstraint = NSLayoutConstraint(item: imageView, attribute: .bottom, relatedBy: .equal, toItem: imageView.superview, attribute: .bottom, multiplier: 1, constant: 0)
bottomConstraint.isActive = true

我想调整图像大小使其适合,以便正确缩放图像 screenshot of ViewController

但是我得到这个错误..

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'NSLayoutConstraint for size {746, 496} orientation 0 scale 1.000000: Constraint items must each be an instance of UIView, or UILayoutGuide.'

最佳答案

//top
let topConstraint = NSLayoutConstraint(item: image, attribute: .top, relatedBy: .equal, toItem: imageView.superview, attribute: .top, multiplier: 1, constant: 0)
topConstraint.isActive = true

您将此约束设置为 image 而不是 imageView

异常明确指出约束项必须每个都是 UIView 或 UILayoutGuide 的实例。'

所有其他约束都设置在 imageViewimageView.superView 之间,因此从逻辑上讲,上述约束也应该使用同一对。

这将处理异常。

//top
let topConstraint = NSLayoutConstraint(item: imageView, attribute: .top, relatedBy: .equal, toItem: imageView.superview, attribute: .top, multiplier: 1, constant: 0)
topConstraint.isActive = true

但是,图像缩放不能通过约束来实现。您必须适本地设置 contentMode 属性。查看 well-explained docs. 中的了解图像的缩放方式部分

关于ios - NSLayoutConstraint问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48456677/

相关文章:

objective-c - xcode 无法隐藏 tabbarcontroller

ios - 为什么我的选择器在应用程序中的位置与 Storyboard中的位置不同

ios - 在 UIPickerView 上滑动以移除

ios - "No Challenges"消息游戏中心 iOS 8

ios - textFieldShouldReturn 不工作

ios - 文档 pageinit 在 iOS (jQueryMobile) 上触发不止一次

swift - swift 中这个神秘的 switch case 代码是什么?

ios - 调整 UITableViewCell 的 NSLayoutConstraint 错误

ios - Autolayot 纵横比 iOS

ios - 当 Storyboard主要基于自动布局时,在 Storyboard中使用 UIScrollViews 的最佳做法是什么?