设备上的图像尺寸错误
Wrong image size on device
我正在制作 iOS 应用程序并在 photoshop 中创建了两个图像。背景图片 (pic1) 2208x1242 像素和第二张图片 (pic2) 928x195 像素大小。
当我在横向模式下 运行 设备上的应用程序(iPhone 7 plus)时,第二张图像几乎占了设备宽度的一半。
第二张图片以编程方式放置
// Constraints
imageView.heightAnchor.constraint(equalToConstant: 195).isActive = true
imageView.widthAnchor.constraint(equalToConstant: 928).isActive = true
imageView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
imageView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
图像似乎被双向拉伸了。如何fix/avoid这个问题?
1) 应用 imageView.contentMode = .scaleAspectFit 后同样的问题
2)如果我替换这段代码
imageView.heightAnchor.constraint(equalToConstant: 195).isActive = true
imageView.widthAnchor.constraint(equalToConstant: 928).isActive = true
和
imageView.frame = CGRect(x: 0, y: 0, width: 928, height: 195)
然后一切正常,但我不明白为什么第一个版本的代码(imageView.heightAnchor和imageView.widthAnchor)不起作用?
设置图像模式宽高比
imageView.contentMode = .scaleAspectFit
我找到了导致问题的原因。
heightAnchor.constraint 和 widthAnchor.constraint 使用点作为大小测量而不是像素,我的图像大小 928x195 以像素为单位。因此,为了解决问题,我只需要将我的图像大小除以 3 以获得 @3x 图像。
来自 UIKit 文档:
NSLayoutDimension -
工厂 class,用于使用流畅的 API 创建 size-based 布局约束对象。
概述
使用这些约束以编程方式使用自动布局定义您的布局。所有尺码均以 POINTS 为单位。
我正在制作 iOS 应用程序并在 photoshop 中创建了两个图像。背景图片 (pic1) 2208x1242 像素和第二张图片 (pic2) 928x195 像素大小。 当我在横向模式下 运行 设备上的应用程序(iPhone 7 plus)时,第二张图像几乎占了设备宽度的一半。
// Constraints
imageView.heightAnchor.constraint(equalToConstant: 195).isActive = true
imageView.widthAnchor.constraint(equalToConstant: 928).isActive = true
imageView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
imageView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
图像似乎被双向拉伸了。如何fix/avoid这个问题?
1) 应用 imageView.contentMode = .scaleAspectFit 后同样的问题
imageView.heightAnchor.constraint(equalToConstant: 195).isActive = true
imageView.widthAnchor.constraint(equalToConstant: 928).isActive = true
和
imageView.frame = CGRect(x: 0, y: 0, width: 928, height: 195)
然后一切正常,但我不明白为什么第一个版本的代码(imageView.heightAnchor和imageView.widthAnchor)不起作用?
设置图像模式宽高比
imageView.contentMode = .scaleAspectFit
我找到了导致问题的原因。
heightAnchor.constraint 和 widthAnchor.constraint 使用点作为大小测量而不是像素,我的图像大小 928x195 以像素为单位。因此,为了解决问题,我只需要将我的图像大小除以 3 以获得 @3x 图像。
来自 UIKit 文档:
NSLayoutDimension - 工厂 class,用于使用流畅的 API 创建 size-based 布局约束对象。 概述 使用这些约束以编程方式使用自动布局定义您的布局。所有尺码均以 POINTS 为单位。