我正在开发一款需要非常精确绘图的iOS应用,并希望能够通过某种方式直观地检查我的iOS设备屏幕上的每个(物理)像素上的完全 。这与OS X上的Pixie app dev工具类似,但对于iOS而言 - 它不会简单地炸毁和消除屏幕的锯齿,它会显示每个像素的非常清晰的网格,以及什么色调/颜色是被吸引到那些像素。
有谁知道这样的工具或技术?
这是我在Retina MacBook上的OS X上的Pixie截图,显示了我正在寻找的输出类型。例如,您可以清楚地看到设计者为"减去"指定1点(跨越两个视网膜像素)。登录黄色最小化图标。
答案 0 :(得分:2)
假设您使用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更改比例,您只需要以正确的间隔绘制线条。