ios – 视网膜问题:如何使UIView的宽度恰好为1像素而不是2像素?

前端之家收集整理的这篇文章主要介绍了ios – 视网膜问题:如何使UIView的宽度恰好为1像素而不是2像素?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道我们正在操作点不是像素,在大多数情况下它是方便的,但我需要使UIView为1像素而不是2像素高度.因此,如果您拖放“Interaface”构建器中的一些UIView(分隔线),并将其设置为1px(点)的高度,则在视网膜屏幕上(在设备和模拟器上)仍将看起来像2像素大小的线.

我知道在viewView中显示的是contentScaleFactor属性,它显示为retina(2.0f)或不是(1.0f).它的视图看起来像1.0f的值,所以你需要从主屏幕中检索:

[UIScreen mainScreen].scale;

这回我2.0f.现在,我添加了这个分隔符视图的高度约束,添加了检查isRetina的方法,并将其划分为1像素:

- (void)awakeFromNib{

  [super awakeFromNib];

  CGFloat isRetina = ([UIScreen mainScreen].scale == 2.0f) ? YES : NO;

  if (isRetina) {

    self.separatorViewHeightConstraint.constant /= 2;
  }
}

这个工作,我只是不确定是使用0.5值的好主意…

解决方法

支持较新的3x显示器(例如iPhone 6),请使用以下代码
UIScreen* mainScreen = [UIScreen mainScreen];
CGFloat onePixel = 1.0 / mainScreen.scale;
if ([mainScreen respondsToSelector:@selector(nativeScale)])
    onePixel = 1.0 / mainScreen.nativeScale;
原文链接:/iOS/330549.html

猜你在找的iOS相关文章