【问题标题】:iOS calayer border the same for retina and non-retina视网膜和非视网膜的iOS calayer边框相同
【发布时间】:2014-03-11 14:54:18
【问题描述】:

在 ios7 中,默认 tableviewcell 上的边框始终大小相同,无论您是在非视网膜设备还是视网膜设备中查看它,即它没有按比例放大。使用 CALayer 创建边框时如何实现相同的效果?我试过了

     CALayer *borderLayer = [CALayer layer];
        [borderLayer setBorderColor:[UIColor redColor].CGColor];

        [borderLayer setBorderWidth:1];
        [borderLayer setContentsScale:1.0f];

但是对于视网膜来说,边框的大小似乎仍然增加了一倍。有谁知道我该如何解决这个问题?

对不起,我意识到我在这里错过了一些东西。与 tableView 示例一样,我只希望边框位于一侧,例如顶部。如果我使用 setBorder 它显然会在框架的所有侧面绘制边框。如果我将图层的框架设置为 0.5,它根本不会显示,如果我将其设置为 1,它显然会再次变厚。

由于前面提到的帧高度为 0.5f 的问题,我无法使用 setBackgroundColor 和 0.5f 的帧,因为它无法渲染。

我唯一的选择是使用更基本的绘图方法吗?

根据 sage444 的回答,我使用了背景色而不是边框​​和以下内容

        if([UIScreen mainScreen].scale > 1.0f){
     [topBorder setFrame:CGRectMake(0,0,width,0.5f)];
}else{
     [topBorder setFrame:CGRectMake(0,0,width,1.0f)];
}

【问题讨论】:

  • 设置边框宽度为 0.5f

标签: ios calayer


【解决方案1】:

要在CALayer 上绘制一条像素线,您应该将宽度设置为0.5f,对于非视网膜显示,它将是 1 像素,而在视网膜上,您也会得到 1 条视网膜像素线。

要检查是不是视网膜显示,请使用contentsScale

【讨论】:

  • 您好,感谢您的回复。我已经编辑了我的答案,因为我意识到我错过了一些东西
  • 要显示线条而不是边框​​,您可以尝试添加背景颜色和高度为 0.5 的子视图;
  • 嘿,这就是我最后所做的。我以为我已经更新了问题,但我的更新提交似乎失败了!
猜你喜欢
  • 2014-03-19
  • 2013-02-10
  • 1970-01-01
  • 2012-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多