在非高清屏上,一个点对应一个像素。为了防止“antialiasing”导致的奇数像素的线渲染时出现失真,你需要设置偏移0.5点。
在高清屏幕上,要绘制一个像素的线,需要设置线宽为0.5个点,同事设置偏移为0.25点
如果线宽为偶数点的话,则不要去设置偏移,否则线条也会失真。
#[[UIScreen mainScreen] scale]是计算屏幕分辨率的
[[UIScreen main] scale] == 1; //代表320 x 480 的分辨率(就是iphone4之前的设备,非Retain屏幕)
[[UIScreen main] scale] == 2; //代表640 x 960 的分辨率(Retain屏幕)
[[UIScreen main] scale] == 3; //代表1242 x 2208 的分辨率
画一像素线的一个宏:
#define SINGLE_LINE_WIDTH (1 / [UIScreen mainScreen].scale)
#define SINGLE_LINE_ADJUST_OFFSET ((1 / [UIScreen mainScreen].scale) / 2)
宏使用
#不论画什么x,y的偏移都是必须设置的()
/*
* 仅当要绘制的线宽为奇数像素时,绘制位置需要调整
*/
CGFloat pixelAdjustOffset = 0;
if (((int)(self.gridLineWidth * [UIScreen mainScreen].scale) + 1) % 2 == 0) {
pixelAdjustOffset = SINGLE_LINE_ADJUST_OFFSET;
}
CGFloat xPos = lineMargin - pixelAdjustOffset;
CGFloat yPos = lineMargin - pixelAdjustOffset;
#如果要画1像素的线,那么线宽不是设为1,而是:SINGLE_LINE_WIDTH