self.layer.borderWidth = 0.5;
在视网膜屏幕上UIButton
或UITextField
渲染良好,但在非视网膜屏幕上,只有顶部和左侧边框呈现,而右侧和底部边框不呈现。
我认为它与屏幕的 dpi 以及如何绘制子点线有关,但可能有更好的解释。
问题:
我想知道是否可以在设置为UIView
的视网膜和非视网膜屏幕上按预期显示 a 边框的所有侧面。borderWidth
0.5
self.layer.borderWidth = 0.5;
在视网膜屏幕上UIButton
或UITextField
渲染良好,但在非视网膜屏幕上,只有顶部和左侧边框呈现,而右侧和底部边框不呈现。
我认为它与屏幕的 dpi 以及如何绘制子点线有关,但可能有更好的解释。
问题:
我想知道是否可以在设置为UIView
的视网膜和非视网膜屏幕上按预期显示 a 边框的所有侧面。borderWidth
0.5
如果您总是想要一条像素(而不是点)线,则必须根据屏幕的比例使用不同的边框宽度。
例如:
CGFloat scale = [[UIScreen mainScreen] scale];
if (scale == 2.0) {
// retina screen;
self.layer.borderWidth = 0.5;
} else {
// non-retina screen
self.layer.borderWidth = 1.0;
}
现在支持多个比例(@3x),最好将马特的答案写成这样:
CGFloat scale = [[UIScreen mainScreen] scale];
CGFloat width = scale > 0.0 ? 1.0 / scale : 1.0;
[self.layer setBorderWidth:width];