问题描述
let aView = UIView()
let width: CGFloat = 173.5
aView.widthAnchor.constraint(equalToConstant: width).isActive = true
print(aView.systemLayoutSizefitting(CGSize(width: width,height: 0)))
@H_404_4@输出(在iOS 13.7上可能会影响其他版本)
@H_404_4@(173.66666666666666,0.0)@H_404_4@我发现使用 0.33 或 0.66 作为小数部分会使输出的错误率有所降低,但仍然有多余的重复数字,例如173.33333333333334 for 0.33 @H_404_4@我也出于高度限制而复制了此内容。使用
UIView.layoutFittingCompressedSize
作为大小也会产生相同的错误输出。
@H_404_4@这是一个错误,还是我对自动版式一无所知?
解决方法
UIKit无法绘制局部像素。
在屏幕尺寸为<button class="btn-standard call-to-action">BUTTON</button>
的设备上(例如iPhone 11),您的结果将是:
@2x
在屏幕尺寸为(173.5,0.0) // nearest half-of-a-point
的设备上(例如iPhone 11 Pro),您的结果将是:
@3x
请注意,如果您尝试:
(173.66666666666666,0.0) // nearest third-of-a-point
您将获得:
let width: CGFloat = 173.25