用于检查视网膜像素iOS的工具或技术?

时间:2015-01-21 01:14:22

标签: ios user-interface graphics uikit core-graphics

我正在开发一款需要非常精确绘图的iOS应用,并希望能够通过某种方式直观地检查我的iOS设备屏幕上的每个(物理)像素上的完全 。这与OS X上的Pixie app dev工具类似,但对于iOS而言 - 它不会简单地炸毁和消除屏幕的锯齿,它会显示每个像素的非常清晰的网格,以及什么色调/颜色是被吸引到那些像素。

有谁知道这样的工具或技术?

这是我在Retina MacBook上的OS X上的Pixie截图,显示了我正在寻找的输出类型。例如,您可以清楚地看到设计者为"减去"指定1点(跨越两个视网膜像素)。登录黄色最小化图标。

enter image description here

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更改比例,您只需要以正确的间隔绘制线条。