我正在开发一个iOS应用程序,它需要非常精确的绘图,并且希望有一些方法可以直观地检查在我的iOS设备屏幕上的每个(物理)像素上正在绘制的是什么。这类似于OS上的Pixie应用开发工具,但是对于iOS --而不是简单的放大和反混叠屏幕,它将显示每个像素的一个非常清晰的网格,以及这些像素的颜色和颜色。
有人知道这样的工具或技术吗?
这是我的Retina MacBook上的Pixie在OS上的截图,它显示了我正在寻找的输出类型。例如,您可以清楚地看到,设计者为黄色最小化图标中的“减号”指定了一个点(跨越两个视网膜像素)。

发布于 2015-01-26 17:17:29
假设您使用Quartz对UIView进行绘图,则可以使用CGContextScaleCTM在像素边界上绘制,而不是在点边界上绘制。这是一个粗略的大纲,你会做什么来做这与屏幕截图你的应用。您也可以让用户拍摄另一个应用的屏幕快照,然后将其导入您的应用程序中。
-(void)drawRect:(CGRect)rect
{
UIView* rootView = <GET_YOUR_ROOT_VIEW>;
//You will probably want to change rect so you don't get distortion
//This assumes that this view is the same size as the screen
[rootView drawViewHierarchyInRect:CGRectMake(0,0,rect.size.width*8, rect.size.height*8, afterScreenUpdates:YES];
CGContextRef cxt = UIGraphicsGetCurrentContext();
//Assumes this is @2x retina. You should check the contentScale to be sure
//and change accordingly
CGContextScaleCTM(ctx, 0.5, 0.5);
//Since we made the screen shot be 8x bigger the pixels
//on an @2x device are in increments of 4
for (int x = 0; x < rect.size.width*8; x+=4)
{
//Draw a line at x to ctx
}
for (int y = 0; y < rect.size.height*8; y+=4)
{
//Draw a line at y to ctx
}
}很抱歉,我没有时间亲自编写和测试这段代码,所以它可能有一些小问题。但这会让你朝着正确的方向前进。
另外,由于您正在放大图像,实际上您不需要用CGContextScaleCTM来更改缩放,您只需要在正确的间隔内画出你的线条。
https://stackoverflow.com/questions/28058016
复制相似问题