高度= 0.5的视图在iPad 2上并不总是可见

时间:2017-07-31 06:07:39

标签: ios autolayout

我有一些文本字段和分隔符视图,它们的高度为0.5像素,通过自动布局设置。

问题:

有时一些分隔符是不可见的,有时它们会变得可见,但有些分隔符会变得不可见。

是因为iPad 2没有Retina显示屏,小于1像素的东西会被舍入为0或1像素?

如果是这样,最简单的方法是在这些设备上最终使它们的大小达到1个像素?我正在考虑为Retina显示器上的高度为0.5的分隔符创建一个自定义UIView子类,否则为1像素。

2 个答案:

答案 0 :(得分:1)

听起来像是Retina的问题!

你可以做的是UIView类的扩展,它检查视图的宽度/高度是否小于1,屏幕是否为非视网膜,然后将其向上舍入为1或0。

希望这有帮助!

答案 1 :(得分:1)

将视图设置为0.5的高度会在各种屏幕上出现问题。在iPad 2上,它可能导致视图根本不可见,因为它没有视网膜屏幕,因此0.5pt线没有相应的像素。在具有3x屏幕的iPhone Plus上,您很可能也会获得别名效果。

要在各种屏幕上正确设置细线(我可以说,这就是Apple的表格分隔符所做的那样),您需要根据屏幕计算宽度。

鉴于您的接收者是UIView拥有您想要配置的线路视图,这应该可以解决这个问题:

目标-C: CGFloat lineHeight = 1.0/self.contentScaleFactor;

夫特: let lineHeight = 1.0/contentScaleFactor

你可以这样做,例如在视图中的didMoveToWindow中,因为在移动窗口时理论上可以改变比例。这在iOS上很少见,但可能会在外部屏幕上显示您的视图。