Masonry icon indicating copy to clipboard operation
Masonry copied to clipboard

view设置了高度为0.8,但是打印出来是1

Open FWBGitHub opened this issue 6 years ago • 7 comments

[view1 mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_offset(100.f); make.height.mas_offset(0.8); make.width.mas_offset(50.f); make.top.mas_offset(100.f); }]; <UIView: 0x7f8749406760; frame = (100 100; 50 1); layer = <CALayer: 0x6000015a9bc0>> 是不是内部做了四舍五入的处理

FWBGitHub avatar Feb 13 '19 08:02 FWBGitHub

和屏幕有关

MeteoriteMan avatar Feb 26 '19 07:02 MeteoriteMan

请问你见过像素有0.5的吗?像素最小单位是1吧?你可以去photoshop上看看

czl0325 avatar Jun 21 '19 02:06 czl0325

这个不能设置小数点的..虽然是float类型

qiuyan81 avatar Sep 22 '19 00:09 qiuyan81

make.height.mas_offset(0.5); 0.5 绘制的实际高度不一: 0.67 或 0.33 对float支持有误差,怎么解决?

iT-Boyer avatar Sep 02 '20 04:09 iT-Boyer

误差还会报错呢。。这类库都不维护了吧??

qiuyan81 avatar Sep 02 '20 06:09 qiuyan81

系统会进行像素对齐。具体计算方式:v = ceil(scale * x) / scale , scale 是屏幕缩放系数。

在 2x 屏幕下 ceil(2 * 0.8) / 2 = 1 在 3x 屏幕下 ceil(3 * 0.8) / 3 = 1

https://lvv.me/blog/posts/2019/12/03_pix_aligned/

cntrump avatar May 31 '21 10:05 cntrump

make.height.mas_offset(0.5); 0.5 绘制的实际高度不一: 0.67 或 0.33 对float支持有误差,怎么解决?

0.5pt 可以当做 1px 来处理,设置为 1 / UIScreen.main.scale

cntrump avatar May 31 '21 11:05 cntrump