因此,我们刚刚发布了一个iOS应用,该应用大量使用了来自Nibs的加载视图(使用Nib可能相关,也可能不相关)。
在我自己的所有测试设备上,一切都按预期方式运行,但是一些用户报告的UI与其设备成比例地缩放。
通过示例,屏幕应该是这样的:
Correctly Proportioned Screenshot与Erroneous Screenshot
两个屏幕截图都是在运行iOS 11.4的iPhone 6s上拍摄的,并且都使用相同版本的应用程序。
加载笔尖的代码非常简单:
extension UINib {
static func instantiateViewAndEmbedWithConstraints <T: UIView> (viewType: T.Type, embedInto containerView: UIView) -> T {
let view = UINib(nibName: String(describing: viewType), bundle: nil).instantiate(withOwner: nil, options: nil).first as! T
containerView.addSubview(view)
view.translatesAutoresizingMaskIntoConstraints = false
let leadingConstraint : NSLayoutConstraint = NSLayoutConstraint(item: view, attribute: .leading, relatedBy: .equal, toItem: containerView, attribute: .leading, multiplier: 1, constant: 0)
leadingConstraint.identifier = "leading"
leadingConstraint.isActive = true
NSLayoutConstraint(item: view, attribute: .trailing, relatedBy: .equal, toItem: containerView, attribute: .trailing, multiplier: 1, constant: 0).isActive = true
NSLayoutConstraint(item: view, attribute: .top, relatedBy: .equal, toItem: containerView, attribute: .top, multiplier: 1, constant: 0).isActive = true
NSLayoutConstraint(item: view, attribute: .bottom, relatedBy: .equal, toItem: containerView, attribute: .bottom, multiplier: 1, constant: 0).isActive = true
return view
}
}
我有点困惑……一切都具有相同的自动布局约束,所以我没有逻辑上的理由想到要调整这样的视图大小。
它使用自动布局,按钮是在所有设备上设置的高度/前导/尾随...但是对于某些用户而言,一切只是在按比例放大。
无论如何,我只是希望这里的某个人可能对我可能尝试研究的根本原因有所了解。当我画一个空白/整天都在把我的头撞在墙上!
非常感谢。