【问题标题】:Tool or technique for examining retina pixels iOS?iOS 检查视网膜像素的工具或技术?
【发布时间】:2015-01-21 01:14:22
【问题描述】:

我正在开发一个 iOS 应用程序,该应用程序需要非常精确的绘图,并且希望通过某种方式直观地检查在我的 iOS 设备屏幕上的每个(物理)像素上准确绘制了什么.这将类似于 OS X 上的 Pixie 应用程序开发工具,但对于 iOS - 它不是简单地放大和消除屏幕锯齿,而是显示每个像素的非常清晰的网格,以及阴影/颜色是什么被这些像素吸引。

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

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

【问题讨论】:

  • 设备上不会有任何东西允许这样做。我唯一的建议是简单地截取屏幕截图,将它们导入您的 Mac,然后使用 Pixie。这就是您可以获得的流畅的工作流程。
  • 您可以直接从 Xcode 截取屏幕截图,并将它们保存在您的桌面上。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多