最近被问到“1像素的线怎么画?”,记得当时我的简单回答是“高度给0.5啊,代码里面设置是可以的,IB里面设置好像也行”。实际上,记得曾经确实这么干过,好像出来的线确实比1pt的要细一些。当然,那个时候6Plus这种大屏手机还没有出来。
最近百度了一下,还真有这样的文章。
IOS的一像素线
下面这段代码,相对比较好,考虑到了屏幕分辨率
- (void)viewDidLoad {
[superviewDidLoad];
CGFloat floatsortaPixel = 1.0 / [UIScreenmainScreen].scale;
UIView *line = [[UIViewalloc] initWithFrame:CGRectMake(0, 20, 320, sortaPixel)];
line.backgroundColor=[UIColor blackColor];
[self.view addSubview:line];
}
其实这个问题也可以扩展一下,比如“35像素的矩形怎么设置?”以前,我们的做法就是做UI的工作:“为什么是奇数呢?iOS要求偶数的,34或者36都行啊,我程序里面对应的是17或者18点(pt),你这个会带来小数,不知道系统会不会起作用....”
更方便一点,做下面一个宏,作为替换,就方便一点,不论是奇数还是偶数的像素都可以拿到
#define PIX(x) ((CGFloat)(x) / [UIScreenmainScreen].scale)