菜鸟教程小白 发表于 2022-12-12 16:14:26

ios - 在 iOS 中绘制尺子 - 在屏幕上精确 1 厘米 - 如何绘制相距 1 毫米的线?


                                            <p><p>我正在尝试为任何可用的 iOS 设备绘制尺子,线条/刻度之间的距离准确为 1 毫米。通常我会得到 PPI 并计算我的像素距离。使用 Objective-C,它似乎不是这样工作的。</p>

<p><code>linesDist</code> 应该在“屏幕坐标像素”中包含我的 1mm 距离。</p>

<p><strong>任何想法,我该如何实现?</strong> </p>

<p>我的基本代码如下所示:RulerView.m,它是一个 UIView:</p>

<pre><code>-(void)drawRect:(CGRect)rect
{
    [ setFill];

    float linesDist = 3.0; // 1mm * ppi ??

    float linesWidthShort = 15.0;
    float linesWidthLong = 20.0;

    for (NSInteger i = 0, count = 0; i &lt;= self.bounds.size.height; i = i + linesDist, count++)
    {
      bool isLong = (int)i % 5 == 0;

      float linesWidth = isLong ? linesWidthLong : linesWidthShort;
      UIRectFill( (CGRect){0, i, linesWidth, 1} );
    }
}
</code></pre>

<p><strong>编辑</strong>
ppi 检测(真的很难看),基于以下答案:</p>

<pre><code>float ppi = 0;
switch ((int).bounds.size.height) {
    case 568: // iPhone 5*
    case 667: // iPhone 6
      ppi = 163.0;
      break;

    case 736: // iPhone 6+
      ppi = 154.0;
      break;

    default:
      return;
      break;
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>iPhone(iPhone6+ 可能除外)是每英寸 163 个“逻辑”点。显然,从 4 开始的手机具有两倍或更多的分辨率,但这对坐标系没有任何影响。</p>

<p>1mm 因此是 163/25.4 或大约 6.4。 iPad 为每毫米 5.2 点,iPad mini 与 iPhone 相同。</p>

<pre><code>-(void)drawRect:(CGRect)rect
{
    [ setFill];
    float i;

    float linesDist = 163.0/25.4; // ppi/mm per inch (regular size iPad would be 132.0)

    float linesWidthShort = 15.0;
    float linesWidthLong = 20.0;

    for (i = 0, count = 0; i &lt;= self.bounds.size.height; i = i + linesDist, count++)
    {
      bool isLong = (int)count % 5 == 0;

      float linesWidth = isLong ? linesWidthLong : linesWidthShort;
      UIRectFill( (CGRect){0, i, linesWidth, 1} );
    }
}
</code></pre>

<p>您希望对 i 使用 float ,以避免在将距离相加时出现舍入错误并避免不必要的转换。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在 iOS 中绘制尺子 - 在屏幕上精确 1 厘米 - 如何绘制相距 1 毫米的线?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/32437977/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/32437977/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在 iOS 中绘制尺子 - 在屏幕上精确 1 厘米 - 如何绘制相距 1 毫米的线?